0

私はWebサイトで作業していて、最近InternetExplorerのデバッグを開始しました。認証は、データベースに対してログイン/パスをチェックし、「Rememberme」がトリガーされた場合にCookieを書き込むPHPZendアクションへのAjaxPOSTリクエストを介して行われます。JSONはステータスコードとともにAjaxに返送されます。(行ってよかった、警告、エラーなど...)そしてこのようなもの:

if( result.code == 0 ){ 
   window.location.reload();
   return false;
}

まず、IEはログイン送信後にJSON応答を含むファイルをダウンロードしようとしたため、その動作を回避するためにヘッダーにいくつかの変更を加えました。

しかし今、IEは何もしません。つまり、Ajaxの成功関数は、すべてが正常であるという適切なコード(0)を受け取り、ページをリロードしますが、まだログインしていません。

私たちのログでは、Zendはすべてが大丈夫だと言っています。

注:[Remember me]チェックボックスをオンにした場合にのみ、ログインできることに気付きました。

それはどこから来たと思いますか?それは他のブラウザでうまく動作していて、私は気が狂います。

編集1:P3Pヘッダーを追加した後の変更はありません。

4

2 に答える 2

1

これはロングショットですが、ページはおそらくブラウザによってキャッシュされていますか?言い換えると、これらのメソッドのいずれかが役立ちます: キャッシュをクリアしたwindow.location.reload

あるいは、この回答のリンクは、チェックすべき他のいくつかのことを強調しています(IEには影響するがFFには影響しない時間差を含む)

于 2012-07-02T19:03:25.380 に答える
0

ついに手に入れた。クリスチャンに感謝します、このリンクは間違いなく役に立ちました。セキュリティ上の理由から、ログインチェック後にZend_Session :: regenerateId()を使用してセッションIDを再生成していました。他のブラウザがセッションIDのみを再生成している場合、IEは新しいものを破棄して生成します。そのため、接続が失われます。(私は考えます)

于 2012-07-03T15:02:04.167 に答える