「cache:false」にもかかわらず、iOS 6 で Safari が POST リクエストをキャッシュするのはなぜですか?

DDD
リリース: 2024-11-03 21:12:03
オリジナル
190 人が閲覧しました

Why Does Safari Cache POST Requests in iOS 6 Despite

キャッシュの難題: iOS 6 での Safari の選択的フェッチ

iOS 6 のリリース以来、開発者は Safari の Web ビューで予期しない動作に遭遇しました: $ .ajax POST 呼び出しは、cache:false 設定にもかかわらず、頑固にキャッシュされます。興味深いことに、この異常は、呼び出された関数が静的署名を使用している場合にのみ発生します。

予備調査により、Safari が POST 応答をキャッシュするのは、Cache-Control または Expires ヘッダーが欠落している場合、または Cache-Control が max-age に設定されている場合のみであることが判明しました。 =0。ただし、リクエスト「Cache-Control: no-cache」を許可すると、この動作がバイパスされ、キャッシュが完全に防止されます。

この HTTP 仕様規定を POST メソッド (セクション 9.5) に利用するという Apple の決定は、開発者を当惑させました。 POST 応答をキャッシュすることは前例のないことではありませんが、Safari がヘッダーなしで、または max-age=0 を使用してキャッシュするという選択は、従来のブラウザーの動作から逸脱しているように思えます。

このキャッシュの問題を解決するには、次のようなグローバル ソリューションが必要です。 Apache の設定は次のとおりです:

Header set Cache-Control "no-cache"
ログイン後にコピー

ただし、POST リクエストのみに「no-cache」ディレクティブを選択的に適用することが望ましい場合、Apache は解決策を提供します。

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST
ログイン後にコピー

代替案、URL または POST データに一意のパラメータを追加すると、静的関数シグネチャのキャッシュの問題を回避できます。

以上が「cache:false」にもかかわらず、iOS 6 で Safari が POST リクエストをキャッシュするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート