URI(特别是HTTP URL)是否允许包含一个或多个空格字符?如果 必须 对URL 进行编码,+这是通常遵循的约定还是合法的选择?
+
特别是,有人可以指向RFC指出 必须 对带有空格的URL 进行编码吗?
提出问题的动机: 在对网站进行Beta测试时,我注意到某些URL的构造带有空格。Firefox似乎做对了,这让我感到惊讶!但是我希望能够将开发人员指向RFC,以便他们觉得有必要修复这些URL。
根据RFC 1738:
不安全:
出于多种原因,字符可能是不安全的。 空格字符是不安全的,因为在对URL进行转录或排版或对文字处理程序进行处理时,可能会消失大量空格并且可能会引入无关紧要的空格。 字符"<"和">"不安全,因为它们被用作自由文本中URL的定界符;"""在某些系统中,引号()用于分隔URL。该字符"#"是不安全的,应始终进行编码,因为该字符在万维网和其他系统中用于从可能跟随其的片段/锚定标识符中分隔URL。性格"%"不安全,因为它用于其他字符的编码。其他字符是不安全的,因为已知网关和其他传输代理有时会修改此类字符。这些字符是"{","}","|","\","^","~", "[","]",和"”`。
"<"
">"
"""
"#"
"%"
"{"
"}"
"|"
"\"
"^"
"~"
"["
"]"
"
所有不安全字符必须始终在URL中编码 。例如,"#"即使在通常不处理片段或锚标识符的系统中,字符也必须在URL中进行编码,因此,如果将URL复制到另一个使用它们的系统中,则无需更改URL编码。