document.referrer不携带URL中#后内容是否符合标准?原因是什么?
关于document.referrer与URL片段标识符的问题解答
嘿,这个问题问得相当精准!我来帮你理清楚这两个核心疑问:
为什么document.referrer无法获取URL中#后的内容?
URL里#后面的部分叫做片段标识符(fragment identifier),它有个关键特性:只在浏览器本地生效,不会被发送到服务器。当用户从一个页面跳转到另一个页面时,浏览器生成document.referrer时会自动剔除这部分内容——因为片段标识符本来就是用来定位当前页面内的锚点(比如跳转到页面某个标题),不属于跨页面跳转时需要传递的请求信息范畴。
这是不是标准行为?
完全是标准行为!HTML和HTTP相关规范里明确规定,document.referrer的值是不包含URL片段部分的。浏览器严格遵循这个规范实现,所以不管你用什么主流浏览器测试,都会得到一致的结果。
关于你的测试代码
你用的这段代码:
<script type="text/javascript"> document.write (document.referrer); </script>
刚好完美契合你的需求——因为规范本身就确保了#后的任何信息都不会被包含在referrer里,所以你完全不用担心这部分内容会被发送到跳转目标站点。
内容的提问来源于stack exchange,提问作者Manny
相关产品推荐
相关产品推荐

