次のような URL に 302 ステータス コードを含む応答を送信することは可能ですか。
6 に答える
はい、フラグメント識別子を使用できます。これはHTTP仕様の既知のバグです。
http://trac.tools.ietf.org/wg/httpbis/trac/ticket/6を参照してください。
HTTP 仕様に従って、Location
ヘッダー フィールドの値はabsoluteURI値である必要があります。そして、それはRFC 3986によるものです (名前をabsoluteURIからabsolute-URIに変更しただけです):
absolute-URI = scheme ":" hier-part [ "?" query ]
したがって、理論的には、フラグメントは値の一部として許可されません。しかし、ブラウザはそれを処理できます。
RFC2616では、絶対 URI の一部ではないため、RFC2616では Location ヘッダー値にフラグメントを使用できません。ただし、IETF の HTTP リライト ドラフト により、これは修正されました。
最近Julianは、ブラウザーが URI フラグメントを処理する方法 (HTML アンカー タグが処理するもの) を Location ヘッダーで比較しました: http://www.greenbytes.de/tech/tc2231/redirects.html
したがって、答えは次のとおりです。はい、Location ヘッダー URI にフラグメントを配置できます。
PHP から実行しても問題はないようです。
Header(
"Location: http://en.wikipedia.org/wiki/HTTP#Status_codes",
true,
302
);
はい。ハッシュをサーバーに送信しないのはブラウザーであり、その逆ではありません。