8

次のような URL に 302 ステータス コードを含む応答を送信することは可能ですか。

http://mysite.com/something/#somethingelse

4

6 に答える 6

6

はい、フラグメント識別子を使用できます。これはHTTP仕様の既知のバグです。

http://trac.tools.ietf.org/wg/httpbis/trac/ticket/6を参照してください。

于 2009-08-16T21:48:25.043 に答える
4

HTTP 仕様に従って、Locationヘッダー フィールドの値はabsoluteURI値である必要があります。そして、それはRFC 3986によるものです (名前をabsoluteURIからabsolute-URIに変更しただけです):

absolute-URI  = scheme ":" hier-part [ "?" query ]

したがって、理論的には、フラグメントは値の一部として許可されません。しかし、ブラウザはそれを処理できます。

于 2009-08-16T11:24:17.133 に答える
4

RFC2616では、絶対 URI の一部ではないため、RFC2616では Location ヘッダー値にフラグメントを使用できません。ただし、IETF の HTTP リライト ドラフト により、これは修正されました。

最近Julianは、ブラウザーが URI フラグメントを処理する方法 (HTML アンカー タグが処理するもの) を Location ヘッダーで比較しました: http://www.greenbytes.de/tech/tc2231/redirects.html

したがって、答えは次のとおりです。はい、Location ヘッダー URI にフラグメントを配置できます。

于 2009-08-19T08:57:25.537 に答える
2

PHP から実行しても問題はないようです。

Header(
    "Location: http://en.wikipedia.org/wiki/HTTP#Status_codes",
    true,
    302
);
于 2009-08-16T11:04:31.690 に答える
1

はい。ハッシュをサーバーに送信しないのはブラウザーであり、その逆ではありません。

于 2009-08-16T11:16:51.333 に答える