2011-06-08 11 views
2

自分の会社のデモサイトでIE固有のajaxログインステータス要求の問題が発生しました。 succsesfullyログイン後Internet Explorer for a login status check ajaxing

、ユーザーがオフに発射するランディングページにリダイレクトされます。それは他のすべてでチャンピオンのように動作している間、すべてのInternet Explorerブラウザ(7-9)で

、この問題が発生し、ログインステータス要求。

このログインステータス要求に「1」以外のものが戻った場合、そのページはログインページにリダイレクトされます。

デベロッパーツールのトラフィックに従うと、その特定のステータスチェックのリクエストが304の変更されていない(決して起こらないはずです)という結果が表示され、リクエストの本文が空に見えます。 (常に0または1を返します)...

そのチェックを含むページのハードリフレッシュ(CTRL-F5)では、ブラウザから304が返されます。

これらの304をフィドラーで追跡すると、ネットワーク経由でそのログインステータスURLが要求されていないことが示され、BROWSER ITSELFは304と仮定して要求を送信できません。

URLを直接訪問すると、レスポンスは常に適切な0または1の200が返されますが、ajax'edの場合は304が多く、ネットワークを経由して304を確認することもありませんサーバー。

クリアブラウザの履歴は、それが200

二重に奇妙に304を変更するかどうかに影響を与えないように見えるすべての10段のまたはそうしようと、これは実際に作業を行い、要求が実際の応答に戻って200にするということですしかし、しばしばそれは応答なしで304に戻り、値はキャッシュされた値と同じではありません(それは何に等しいかもわかりません)

私はこの要求に対する応答を変更しました。 phpによって生成された次のヘッダーを持っている:

header('Cache-Control: no-cache'); 
header('Pragma: no-cache'); 
header('Expires: -1'); 

IEで直接URLにアクセスすると、これらのヘッダーが存在します.304が発生すると、これらのヘッダーは存在しません。

IEが積極的にその特定の要求を無視しているかのように...任意のアイデア

ですか?

これも、これはまったく別のブラウザで、文字通り、さまざまな味のIEで動作します。

答えて

4

ステータスリクエストのURLにランダムなクエリ文字列のパラメータを追加してみてください。 like:

'/your/url?breakcache='+Math.random() 
+0

興味深い解決策は、これを試してみましょう。 – Rimer

+0

@Rimer:だから?どうしたの? –

+0

働いて、ありがとう! – Rimer