1

我有一个 HTML 文件test.html

<a href="http://%67oogle.com">http://%67oogle.com</a>
<br>
<a href="http://www.%67oogle.com">http://www.%67oogle.com</a>

这些链接在 Chrome、IExplorer、Safari 和 Opera 中有效(http://%67oogle.com指向http://google.com)。

但是,这些链接在 FireFox (v13.0.1) 上不起作用。

为什么 FireFox 不将http://%67oogle.com指向http://google.com

4

1 回答 1

1

有效的 HTTP URI 是符合RFC 2616的 HTTP/1.1 标准。它说:

... For definitive information on
URL syntax and semantics, see "Uniform Resource Identifiers (URI):
Generic Syntax and Semantics," RFC 2396 [42] (which replaces RFCs
1738 [4] and RFC 1808 [11]). This specification adopts the
definitions of "URI-reference", "absoluteURI", "relativeURI", "port",
"host","abs_path", "rel_path", and "authority" from that
specification.

The "http" scheme is used to locate network resources via the HTTP
protocol. This section defines the scheme-specific syntax and
semantics for http URLs.

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

如果我们深入研究RFC 2396,它定义host为:

  host          = hostname | IPv4address
  hostname      = *( domainlabel "." ) toplabel [ "." ]
  domainlabel   = alphanum | alphanum *( alphanum | "-" ) alphanum
  toplabel      = alpha | alpha *( alphanum | "-" ) alphanum

让我们也看看RFC 3986

reg-name 语法允许百分比编码的八位字节,以便以独立于底层名称解析技术的统一方式表示非 ASCII 注册名称。非 ASCII 字符必须首先根据 UTF-8 [STD63] 进行编码,然后必须对相应 UTF-8 序列的每个八位字节进行百分比编码才能表示为 URI 字符。 生成 URI 的应用程序不得在主机中使用百分比编码,除非它用于表示 UTF-8 字符序列。

所以 Firefox 不重定向你是完全正确的。%67oogle.com是 URL 的无效主机部分。

于 2014-05-16T22:31:44.343 回答