iOS6にてPOSTによるAjaxがキャッシュされる!?
iOS6のSafariでWebサイトが正しく動作しない問題がかなり深刻・・ - NAVER まとめ等で報告されている事象の一部にぶちあたった。
それは、、、
問題その1. AjaxのPOSTがキャッシュされる
とある見積サイトにて、ユーザーの入力内容と最終的な見積金額が合わない、との連絡が。。。
まずはログ等から調査を行ったところUAはiOS6のMobile Safariだった。
ユーザーの操作および入力内容を特定し、実機にて確認を行ってみると、たしかに、毎回ではないが現象を再現させることができた。
どのリクエストがキャッシュされたのか特定するために、
- PC(Chrome)から同様の操作を行った場合のアクセスログ
- iOSから同様の操作を行った場合のアクセスログ
を比較してみたところ、ドキュメントロード時に初期実行しているAjaxのPOSTリクエストがキャッシュされてるっぽい。。
これは、、、仕様なのか、、、バグなのか。。。
結局、先人方同様、
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
しつこいくらいにキャッシュを無効にしました。