我知道%20和+都解码为相同的二进制值(空格),对于大多数网络服务器,尤其是那些映射到物理文件的网络服务器,它们将指向相同的资源。
但我的问题是,像http://www.example.org/hello%20world这样的网址必须指向与http://www.example.org/hello+world相同的资源,它们是否规范相同?
在HTTP / 1.0 +中没有映射到空格,所以我特意询问HTTP / 1.1。
答案 0 :(得分:4)
仅在查询字符串中:加号是保留字符,因此必须进行编码以在路径或查询字符串中传递实际的“+”。它用作替换空格的是W3C Recommendation,它只适用于查询字符串:
在查询字符串中,加号 保留为简写符号 空间。因此,真正的加号 必须编码。使用该方法 使查询URI更容易传入 不允许空间的系统。
URI比较(RFC 2616):
比较两个URI以决定是否 他们匹配与否,客户应该使用 区分大小写的八位字节 比较整个URI,用 这些例外:
- A port that is empty or not given is equivalent to the default port for that URI-reference; - Comparisons of host names MUST be case-insensitive; - Comparisons of scheme names MUST be case-insensitive; - An empty abs_path is equivalent to an abs_path of "/".
除了那些之外的人物 “保留”和“不安全”集(参见RFC 2396 [42])相当于他们的 “”%“HEX HEX”编码。
保留字符(RFC 2396)
“;” | “/”| “?” | “:”| “@”| “&安培;” | “=”| “+”| “$”| “”
所以,在第三次复飞中:没有任何官员宣称他们是同一件事。使用'+'从字面上将http://example.org/hello+world
引导到名为hello+world
的目录是不正确的,但没有任何内容表明它应该被视为等同于空格。