2014年6月27日更新:
RFC 7231、Hypertext Transfer Protocol(HTTP / 1.1):Semantics and Contentは、PROPOSED STANDARDとして公開されています。変更ログから:
Locationヘッダーフィールドの構文が変更され、相対参照やフラグメントを含むすべてのURI参照が許可されるようになり、フラグメントの使用が適切でない場合の明確化も行われました。(セクション7.1.2)
7.1.2項の重要なポイント。場所:
3xx(リダイレクト)応答で提供されるLocation値にフラグメントコンポーネントがない場合、ユーザーエージェントは、値がリクエストターゲットの生成に使用されるURI参照のフラグメントコンポーネントを継承するかのようにリダイレクトを処理する必要があります(つまり、リダイレクトは継承します)元の参照のフラグメント(存在する場合))。
たとえば、URI参照 " http://www.example.org/~tim " に対して生成されたGETリクエストは、ヘッダーフィールドを含む303(その他を参照)レスポンスになる可能性があります。
Location: /People.html#tim
これは、ユーザーエージェントが「http://www.example.org/People.html#tim」にリダイレクトすることを示唆しています
同様に、URI参照「http://www.example.org/index.html#larry」に対して生成されたGETリクエストは、ヘッダーフィールドを含む301(永久に移動)応答になる可能性があります。
Location: http://www.example.net/index.html
これは、ユーザーエージェントが「http://www.example.net/index.html#larry」にリダイレクトし、元のフラグメント識別子を保持することを示唆しています。
これはあなたの質問に明確に答えるはずです。
ENDを更新
これは、現在のHTTP仕様でのオープンな(指定されていない)問題です。IETF httpbisワーキンググループの 2つの問題で対処されています。
#6はLocation
ヘッダーのフラグメントを許可します。#43はこれを言います:
これをさまざまなブラウザでテストしました。
- FirefoxとSafariは、ロケーションヘッダーでフラグメントを使用します。
- Operaは、存在する場合、ソースURIからのフラグメントを使用します。それ以外の場合、リダイレクト場所からのフラグメントを使用します
- IE(8)はロケーションURIのフラグメントを無視するため、存在する場合はソースURIのフラグメントを使用します
提案:
「注:元のURIからのフラグメント識別子とリダイレクトを組み合わせる必要がある場合の動作は定義されていません。現在のユーザーエージェントは、実際に優先されるフラグメントが異なります。」
[...]
IE8 は idenfitierのフラグメントを使用しているようですLocation
(私が見た動作はlocalhostに制限されている可能性があります)。
したがって、元のURIが何であっても、Locationヘッダーのフラグメントが使用されるという点で、Safari / IE / Firefox / Chromeで一貫した動作をしているように見えます。
したがって、私は提案を変更して、それを予想どおりの動作として文書化します。
これにより、ブラウザの互換性が最も高くなり、将来的には証明されます(この問題は最終的に標準化されるため)。
A:元のURLのフラグメントは破棄されます。
B:Location
ヘッダーのフラグメントが受け入れられます。