3

iOS 6 の Safari (以前のバージョンはテストしていません) が、現在のページのフォーム入力として存在しないが、以前の POST で同じ URL に送信された値を POST データで送信している状況に遭遇しています。

シナリオは次のとおりです。

  1. ユーザーは、いくつかのクエリパラメーターを含むログインページの URL に送信されます。/login?x=1,y=2
  2. ユーザーが間違った資格情報を入力すると、ログイン ページが再度表示され、非表示の入力としてフォームxy埋め込まれます。
  3. ユーザーが GET を取得する Safari で「戻る」ボタンを押します/loginxとの値がy失われ、非表示のフォーム入力として含まれなくなりました。
  4. ユーザーが再び間違った資格情報を入力すると、ここで奇妙なことが起こります。通過する POST データには、ユーザーが入力したばかりのユーザー名とパスワード、および以前に送信された の値が含まれていますが、 は含まxていませんy。この特定の Web アプリでは、xなしの存在はy、この特定の POST に対して無効な状態であり、エラーになります。

手順 3 で、Safari がページのキャッシュ バージョンを使用するのではなく、実際に GET を実行していることを確認しました。

それだけの価値があるため、Cache-Control 応答ヘッダーを次のように設定しています。no-cache, no-store, must-revalidate

更新: Apple にバグを報告して、Apple がこれを認識していることを確認しました。フィードバックがあれば、ここに投稿します。

4

0 に答える 0