初心者SEのとりあえずメモ日記

初心者SEが技術的な事とかを、とりあえずメモしておくための日記です。

LocationヘッダにURL以外を設定したときのブラウザの挙動

   

HTTPヘッダのリダイレクト先を示す箇所に、javasciptの実行スクリプトが含まれていた場合に、ブラウザがどのような挙動をするのか。

1.Locationヘッダ

ブラウザはWebサーバにHTTPリクエストを送信し、その応答であるHTTPレスポンスのレスポンスコードが302などリダイレクトを示すものである場合、自動的にリダイレクトを行う。このとき、リダイレクトを行う先の情報として利用されるのが、レスポンスヘッダの「Location」ヘッダである。Locationヘッダには、ブラウザが次にアクセスすべきURLが記載されており、実際にユーザーのブラウザ上に表示されるコンテンツは、Locationヘッダに記載されたURLとなる
http://www.atmarkit.co.jp/ait/articles/0804/08/news137_2.html

つまり、ここに設定されたURLに自動的にリダイレクトされるということです。

 

2.URL以外はRFCの準拠違反

Locationヘッダに設定される値は、URL以外は認められません。

なぜなら、RFCで「値は単一の絶対URIで構成される。」と定義されているからです。

Location = “Location” “:” absoluteURI

An example is:

Location: http://www.w3.org/pub/WWW/People.html
http://tools.ietf.org/html/rfc2616#page-135

ということで、このLocationヘッダに、javascriptの実行スクリプトが含まれていた場合、ブラウザがどのような挙動をするか、chromで試してみます。

 

スポンサーリンク

 

3.事例

例えば、以下のような場合どうなるか。


 

4.ブラウザの挙動

chromeでは、やはりリダイレクトされませんでした。
デベロッパツールのレスポンス詳細には「Request Headers CAUTION: Provisional headers are shown」と表示されていました。

IEでも同様にリダイレクトされず、代わりに「このページは表示できません」の画面が表示されました。

やはりURL以外の値は認められないようです。

 


 - WEB
 -

  シェアしていただけるとうれしいです

  関連記事

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です