是否允许URI(特别是HTTP URL)包含一个或多个空格字符?如果对URLmust进行编码,那么+
是通常遵循的约定,还是合法的替代方案?
具体地说,有人能指出指示带有空格must的URL被编码的RFC吗?
Motivation for question:在对网站进行beta测试时,我注意到一些URL是用空格构建的. firefox 似乎做了正确的事情,这让我很惊讶!但我希望能够将开发人员指向RFC,这样他们就会觉得有必要修复这些URL.
是否允许URI(特别是HTTP URL)包含一个或多个空格字符?如果对URLmust进行编码,那么+
是通常遵循的约定,还是合法的替代方案?
具体地说,有人能指出指示带有空格must的URL被编码的RFC吗?
Motivation for question:在对网站进行beta测试时,我注意到一些URL是用空格构建的. firefox 似乎做了正确的事情,这让我很惊讶!但我希望能够将开发人员指向RFC,这样他们就会觉得有必要修复这些URL.
根据RFC 1738:
不安全:
由于多种原因,字符可能是不安全的.The space character is unsafe because significant spaces may disappear and insignificant spaces may be introduced when URLs are transcribed or typeset or subjected to the treatment of word-processing programs. 字符
"<"
和">"
是不安全的,因为它们被用作 自由文本形式的URL两边的分隔符;引号("""
)用于 在某些系统中分隔URL.角色"#"
是不安全的,应该 始终进行编码,因为它用于万维网和其他 从片段/锚标识符分隔URL的系统,该片段/锚标识符可以 跟着它走.字符"%"
是不安全的,因为它用于 其他字符的编码.其他角色是不安全的,因为 已知网关和其他传输代理有时会修改 这样的人物.这些字符是"{"
、"}"
、"|"
、"\"
、"^"
、"~"
,"["
、"]"
和"`"
.All unsafe characters must always be encoded within a URL.为 例如,字符
"#"
必须编码在URL内,即使在 通常不处理片段或锚点的系统 标识符,以便在将URL复制到 不使用它们,则不需要更改URL编码.