0

ブラウザで JavaScript を無効にしているときに戻るボタンの機能に関連する、Mac OSX システムでの Safari/Webkit の「奇妙な」動作に関して問題があります。

私が持っているシナリオは、ログインが成功するとユーザーをページ1に導くログインページで構成されるWebアプリケーションです。ユーザーが page1 からログアウトすると、page2 にリダイレクトされます。page1 へのセッション外および認証されていないリクエストは、302 HTTP レスポンスを介して最初のログイン ページにリダイレクトされます。

また、page1 へのリクエストへのレスポンスには、ブラウザがページをキャッシュするのを防ぐために、次の HTTP ヘッダーが存在することにも言及する価値があります。

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Thu, 1 JAN 1970
Pragma: no-cache

page1 から正常にログアウトすると、ユーザーは page2 にリダイレクトされます。この時点でユーザーが [戻る] ボタンをクリックすることを決定した場合、ブラウザーはサーバーに再度アクセスして新しいコピーを取得するのではなく、キャッシュからページ 1 を読み込みます。これはすべて、Safari 内で JavaScript が無効になっている間に発生することに注意してください。JavaScript を有効にすると、Web サーバーから page1 をリロードするという期待される結果が生成され、ユーザーは最初のログイン ページにリダイレクトされます。

ページ body タグに unload イベント ハンドラを設定して、Webkit がそのページ キャッシュにページをロードしないようにしようとしましたが、問題は解決していないようです。

他の主流のブラウザーである FF、IE、および Chrome は、JS と非 JS の両方の状況で期待される結果を生成するようです。

ここに何か欠けているのでしょうか、それとも Safari/WebKit のバグのように聞こえますか?

乾杯;

4

1 に答える 1

0

これは、Webkit/Safari のページ キャッシュ機能によるものです。詳細については、以下のリンクを参照してください。

iOS 5 Safari のページ キャッシュで戻るときに発生する問題 / アンロード イベントが発生しない

簡単な修正として、ウィンドウのアンロード イベントに空の関数を追加してみてください。これが存在する場合、Webkit/Safari はページを pageCache に追加しません。他のブラウザーと同様に、ページは通常通りロードされます。

于 2013-06-27T11:37:23.463 に答える