这是众所周知,网址片段(之后的部分 #)是不送到服务器。

我不知道但如何碎片工作时的一个服务器redirect(通过HTTP地位和302 Location: 头)。

我的问题是真的有两个:

  1. 如果原来的网址有一个片段(/original.php#foo),并且一向是为了 /new.php, 不该段的一部分,原来的网址简单地获得失去了什么?或者它不会有时获得应用于新的网址?
    会的新网址曾经 /new.php#foo 在这种情况下?

  2. 不论原来的网址,如果服务器重定向到新网址的一个片段(/new.php#foo),将片段获得的"荣誉"?或服务器真的没有商业干扰的片段,在所有--并且将浏览器,因此忽略它只需要 /new.php??

有帮助吗?

解决方案

更新的2014-Jun-27:

RFC7231,超文本传输协议(HTTP/1.1):语义和内容, 已出版作为一个提议的标准。从 :

语法中的位置头域已经改变,以允许所有 URI参考文献,包括相对的参考文献和碎片,沿 与一些澄清时使用的碎片不会 适当的。(第7.1.2)

重要的一点 第7.1.2.位置:

如果位置价值提供一个3xx(向)响应不 没有一个片段组件,用户的代理人必须处理的 重定向,如果价值继承的片段组成部分URI 参考用于生成请求目标(即,重定向 继承原始参考的片段,如果有的话)。

例如,一个 获取请求所产生的URI参考 "http://www.example.org/~蒂姆"可能会导致303(参见其他) 反应包含的标题领域:

Location: /People.html#tim

这表明用户代理的重定向 "http://www.example.org/People.html#tim"

同样地,一个得到请求所产生的URI参考 "http://www.example.org/index.html#larry"可能会导致301(移动 永久性的)应包含该标题领域:

Location: http://www.example.net/index.html

这表明用户代理的重定向 "http://www.example.net/index.html#larry"保留原来的 片段标识符。

这应该清楚地回答你的问题。

更新结束

这是一个开放的(不指定的)问题 目前HTTP规范.它是解决问题2的 IETF httpbis工作组:

#6允许的碎片在 Location 头。#43这样说:

我只是测试这与各种浏览器。

  • Firefox和野生动物使用的片段中的位置头。
  • 歌剧院采用的片段从源URI,当本,否则片段的重新定向的位置
  • IE(8)忽略了该段中的位置URI,因此将使用的片段从源URI,当本

建议:

"注:该行为时段标识符,从原来的URI和重新定向需要合并的不确定;目前的用户代理的确不同于什么片段优先。"

[...]

它的出现,IE8 使用的片段idenfitier从 Location (的的行为,我看见可能限于"localhost").

因此,我们似乎一致的行为Safari/IE/Firefox/铬(只是测试),在这碎片从位置头被使用,不管是什么原URI。

因此,我改变我的建议的文件 如预期的行为。

这导致最浏览器兼容和未来证明(因为这个问题最终将获得标准化)回答你的问题:

A: 碎片从原来的网址获得放弃。

B: 碎片从 Location 标题是荣幸。

其他提示

Safari5和IE9和下降的原URI的片段,如果一个HTTP/3xx重新定向的发生。如果位置头上的响应,指定一片段,它是使用。

10+、铬11+,Firefox4+,歌剧院将所有"重新"的原URI的片段之后的下一个3xx重新定向。

测试页: http://www.webdbg.com/test/redir/fragment/.

看到的进一步讨论这个问题 http://blogs.msdn.com/b/ieinternals/archive/2011/05/17/url-fragments-and-redirects-anchor-hash-missing.aspx

只是让你知道,你可以在这里找到适当的规格。通过w3c的定义如何都应该表现: http://www.w3.org/TR/cuap#uri 条款4.1-看到如下:

当资源(URI1)已经移动,HTTP重定向能够表明它的 新的位置(URI2).

如果URI1有一个片段标识#frag,那么新的目标, 用户代理应试图达到将被URI2#frag.如果URI2 已经有一个片段标识,然后#frag不能附和 新的目标是URI2.

错误的:大多数当前用户的代理执行HTTP重但不要 追加的片段标识到新URI,其一般 混淆用户,因为他们最终有错误的资源。

参考文献:

HTTP重描述在第10.3HTTP/1.1 说明[RFC2616].所需要的行为是详细描述 在"处理段标识符,在重新定向的网址"[RURL].的 术语"持续的均匀资源定位器(反)"指定的一个网址(a 特殊情况下URI)点到另一个通过HTTP 重定向。更多信息,请参考"持续的均匀资源 定位器"[反].例如:

假设一户请求的资源 http://www.w3.org/TR/WD-ruby/#changes 和服务器重定向 用户代理 http://www.w3.org/TR/ruby/.之前获取,后者 URI,浏览器应该追加的片段标识#改变它: http://www.w3.org/TR/ruby/#changes.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top