为啥 IE10 会删除外部重定向链接上的 URL 哈希标记
Posted
技术标签:
【中文标题】为啥 IE10 会删除外部重定向链接上的 URL 哈希标记【英文标题】:Why is IE10 removing URL hash marks on external redirect links为什么 IE10 会删除外部重定向链接上的 URL 哈希标记 【发布时间】:2014-02-23 03:58:46 【问题描述】:我有一个基本链接:
<a href="https://pieworld.com/apple#1/" target="_blank">Free Pie Here</a>
但是当我点击它时,我被重定向到https://pieworld.com/apple
不包括哈希标记之后的所有内容以及哈希。这只发生在 IE10 中。我也测试过没有target="_blank"
,但链接仍然在哈希处断开。
似乎找不到任何关于此的文档。我最接近的是this SO question,但它没有帮助。
一些可能有帮助的背景信息:
这是一个 .Net 网站
我正在从 http:
重定向到 https:
站点。
【问题讨论】:
在哈希之前放一个/..apple/#1 @dcc:为什么你认为另一个斜杠会使 URL 成为哈希的一部分? 我很好奇这个答案。什么对你有用? 你在哪里检查你被重定向到哪个 URL?您是否检查网络跟踪或 IE 地址栏?您想使用“#”作为服务器路径的一部分还是片段/锚点? 【参考方案1】:根据RFC3986https://www.rfc-editor.org/rfc/rfc3986,不能使用这种格式。您应该删除尾部斜杠。如果你有一个尾部斜杠,它指向服务器中的一个目录。没有它,您将指向一个文档,并且您可以使用井号指向文档的一部分。 See example here.
【讨论】:
【参考方案2】:哈希字符用于 URL 中的书签。要将哈希字符用作 URL 本身的一部分,您需要使用 %23
对其进行 URL 编码:
<a href="http://pieworld.com/apple%231/" target="_blank">Free Pie Here</a>
【讨论】:
不走运,新窗口在导航栏中以http://pieworld.com/apple%231/
打开,而不是http://pieworld.com/apple#1/
@BadDog:是的,这是编写包含哈希字符的 URL 的正确方法。如果您不对其进行编码,则它之后的所有内容都将成为书签。在发送到服务器的 URL 中不能包含哈希字符而不对其进行编码。
@dcc:是的,它们是,但在这种情况下,它不是哈希(书签)。问题的重点是 OP 不希望 URL 的那部分保留在客户端中。
它并不能准确地反映所谓的“片段标识符”的含义,而且公平地说,我以前从未见过有人称它为任何意义上的书签。
有趣。虽然那个页面也指的是一个选框,所以我猜它是旧的。不是说你错了,只是对这个词的用法感到惊讶,并认为它可能也会让其他读者感到困惑。【参考方案3】:
为什么哈希后面有一个斜杠?
试试https://pieworld.com/apple/#1
那会更标准。我从来没有听说过有人在哈希链接后面加上斜杠。
【讨论】:
【参考方案4】:我认为,正如其他人所建议的那样,您尝试导航到的网站可能将/#1
解释为父页面/文档中的文件夹/页面。尝试删除 #1
之前的正斜杠,或在 html 中查看标题的 id/name 标记,以便直接链接它。
也可能是 IE10 的 bug。
-幻影
【讨论】:
【参考方案5】:任何包含 # 字符的 URL 都是片段 URL。 # 左侧的 URL 部分标识可以由浏览器下载的资源,而右侧的部分(称为片段标识符)指定资源中的位置。
http://www.httpwatch.com/features.htm#print
在 HTML 文档中,浏览器会查找具有与片段匹配的 id 属性的元素。例如,在上面显示的 URL 中,浏览器会在打印支持标题中找到匹配的标签:
<h3 id="print">Printing Support</h3>
并滚动页面以显示该部分。
我不确定是否支持散列后的斜线。如果您不打算将其用作碎片 url,则应删除散列或替换它。
【讨论】:
【参考方案6】:Location 标头字段的语法已更改为允许所有 URI 引用,包括相对引用和片段, 以及关于何时不适合使用片段的一些说明。 (第 7.1.2 节)
欲了解更多信息,请查看this 彻底的帖子。
【讨论】:
【参考方案7】:点击返回按钮时从 URL 中删除哈希 IE9 , IE10 IE11
在 IE10 浏览器中,第一次点击 HREF 链接时,会出现以下正确的 url:http://www.example.com/yy/zz/ff/paul.html#20007_14
如果在 IE10 浏览器中点击后退按钮并再次点击 HREF 链接,则会出现以下 url:http://www.example.com/yy/zz/ff/paul.html
解决方案:
请用 https 更改您的网址
对我有用
【讨论】:
以上是关于为啥 IE10 会删除外部重定向链接上的 URL 哈希标记的主要内容,如果未能解决你的问题,请参考以下文章
Apache(W10 上的 wampserver 3.2)虚拟主机正在重定向到外部 url 而不是本地文件夹