2

跟进我可以在 URL 中使用 at 符号 (@) 吗?

根据投票最多的答案@不是 URL 路径中的保留字符(尽管它在主机中)。

但是,给定@路径中的一个,URL 编码的形式是否可以互换?换句话说,twitter.com/@user严格等价于twitter.com/%40user?

在实践中,它们似乎经常可以互换使用,但很好奇是否严格如此(例如AbC@gmail.com,在技术上与 不同abc@gmail.com,但几乎每个人都将它们视为相同)。

更广泛地说,什么时候需要将字符和 URL 编码版本视为相同,以及何时不同(例如,与 不同example.com/path%2Fasdfexample.com/path/asdf……</p>

4

1 回答 1

3

URIhttp://twitter.com/@userhttp://twitter.com/%40user等价


URI 标准是STD 66,目前映射到RFC 3986(更新RFC 1738)。

6.2.2.2 节。Percent-Encoding Normalization定义了如何规范化百分比编码的 URI 以比较它们的等价性(在大写十六进制数字之后A- F,如6.2.2.1 Case Normalization所定义)。

它说:

[...] 一些 URI 生产者对不需要百分比编码的八位字节进行百分比编码,从而导致 URI 等同于它们的非编码对应物。这些 URI 应该通过解码与未保留字符相对应的任何百分比编码的八位字节来规范化,如第 2.3 节中所述。

链接的第 2.3 节列出了未保留的字符,它们是:

  • 阿尔法 ( a- z, A- Z)
  • 数字 ( 0- 9)
  • - . _ ~

本节还指出,即使没有发生标准化:

在用相应的百分比编码的 US-ASCII 八位字节替换未保留字符方面不同的 URI 是等效的:它们标识相同的资源。

@不是“未保留”集的一部分。它是"reserved" set的一部分,它说:

在用相应的百分比编码八位字节替换保留字符方面不同的 URI 是不等价的。

于 2016-04-29T13:35:06.120 回答