Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以通过锚向url发送HTTP重定向吗?_Http_Http Status Code 302 - Fatal编程技术网

我可以通过锚向url发送HTTP重定向吗?

我可以通过锚向url发送HTTP重定向吗?,http,http-status-code-302,Http,Http Status Code 302,是否可以将带有302状态代码的响应发送到如下url: 从PHP执行此操作似乎没有问题: Header( "Location: http://en.wikipedia.org/wiki/HTTP#Status_codes", true, 302 ); 对。浏览器不会向服务器发送哈希,而不是相反。根据HTTP规范,的值必须是绝对URI值。这是根据(他们刚刚将名称从absoluteURI更改为absoluteURI): 因此理论上不允许片段作为值的一部分。但是浏览器可以处理它

是否可以将带有302状态代码的响应发送到如下url:


从PHP执行此操作似乎没有问题:

Header(
    "Location: http://en.wikipedia.org/wiki/HTTP#Status_codes",
    true,
    302
);

对。浏览器不会向服务器发送哈希,而不是相反。

根据HTTP规范,的值必须是绝对URI值。这是根据(他们刚刚将名称从absoluteURI更改为absoluteURI):


因此理论上不允许片段作为值的一部分。但是浏览器可以处理它。

是的,您可以使用片段标识符。这是HTTP规范中的一个已知错误

请参阅。

严格读取不允许位置标头值中包含片段,因为它们不是绝对URI的一部分。然而,随着时间的推移

最近比较了浏览器如何处理Location标头中的URI片段(这就是HTML锚定标记所处理的):

因此答案是:是的,您可以将片段放在位置头URI中。

而原始的只允许
位置头中的
绝对URI
,正如其他(旧的)答案所解释的,当前允许任何
URI引用
,或者是完整URI(可能包含片段),甚至是相对URI,根据当前有效URI解析。它甚至明确地描述了重定向期间片段的行为(如果
位置
头包含该片段,则使用它,如果不包含,则在重定向后继承并应用原始片段)


也就是说,是的,您可以,它现在甚至已经正式标准化了。

您使用哪种语言?Web服务器?如果您使用mod#u rewrite来执行此操作,它将无法像#那样工作escaped@Manni是的,我确实试过了,但是我的代码中有一个错误,这就是为什么它不起作用。现在它起作用了@设拉子:我在用python。这是否意味着你的问题不再重要了?@Manni你今天过得不好吗?我认识这个家伙!我想这样做,但如果我这样做,就会有问题。如果我继续我的链接,在这种情况下,我将重定向到
http://en.wikipedia.org/wiki/HTTP#Status_codes/
和结尾处的/不显示锚点。我可以将锚点重命名为
Status\u codes/
,我想知道是否有更好的方法。
absolute-URI  = scheme ":" hier-part [ "?" query ]