会社用に作成しているデモ サイトで、IE 固有の ajax ログイン ステータス リクエストの問題が発生しています。
すべての Internet Explorer ブラウザー (7-9) でこの問題が発生しますが、他のすべてのブラウザーではチャンピオンのように機能します。
ログインに成功すると、ユーザーはランディング ページにリダイレクトされ、ログイン ステータス リクエストが開始されます。
このログイン ステータス リクエストが「1」以外で返された場合、ページはログイン ページにリダイレクトされます。
開発者ツールでトラフィックをたどると、その特定のステータス チェックのリクエストが 304 Not modified になり (発生しないはずです)、リクエストの本文が EMPTY と表示されることがわかります。(常に 0 または 1 を返します)...
そのチェックインを含むページのハード リフレッシュ (CTRL-F5) を実行すると、ブラウザから 304 が返されます。
フィドラーでこれらの 304 を追跡すると、そのログイン ステータス URL に対するネットワーク経由のリクエストさえないことが示されます。BROWSER ITSELF は 304 を想定しており、リクエストの送信に失敗しています。
URL に直接アクセスすると、応答は常に 200 で、適切な 0 または 1 が期待されますが、ajax されると、ほとんどの場合 304 であり、サーバーから 304 を確認するためにネットワーク経由で送信することはありません。
ブラウザの履歴をクリアしても、304 が 200 に変更されるかどうかには影響がないようです。
二重に奇妙なのは、10回ほど試行するたびに、これは実際に機能し、リクエストは実際の応答で200を返しますが、ほとんどの場合、応答なしで304が返され、値はキャッシュされた値で1と等しくなりません(それが何に相当するのかわからない?!)
このリクエストへのレスポンスを変更して、php によって次のヘッダーが生成されるようにしました。
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: -1');
IE で直接 URL にアクセスすると、これらのヘッダーは存在しますが、304 が発生した場合は存在しません。
あたかも IE がその特定の要求を積極的に無視しているかのようです...
何か案は?
繰り返しますが、これは文字通り他のすべてのブラウザで動作しますが、さまざまなフレーバーのIEです。