为啥 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 中,浏览器会在打印支持标题中找到匹配的标签: &lt;h3 id="print"&gt;Printing Support&lt;/h3&gt; 并滚动页面以显示该部分。

我不确定是否支持散列后的斜线。如果您不打算将其用作碎片 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 而不是本地文件夹

删除 404 重定向上的所有 url 参数

Xampp - 将外部 url 重定向到 localhost

302 登录重定向后被 IE 删除的 URL 片段

重定向所有外部链接

为啥在 URL 中缺少尾部斜杠 (/) 时会发生重定向?