如果存在非法字符会怎样? URL是否通过将非法字符编码为其他内容来自行修复?
答案 0 :(得分:4)
正如here
所解释的那样ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -._〜:/#[] @ $&安培;'()* +,=?! 任何其他字符都需要使用百分比编码进行编码 (%11H)。 URI的每个部分都有进一步的限制 字符需要用百分比编码的单词表示。
答案 1 :(得分:4)
RFC 3986定义哪些URI组件允许使用哪些字符。
特定URI schemes的RFC可能会进一步限制此问题。
如果您对HTTP / HTTPS URI感兴趣:它们在RFC 7230中定义。 AFAIK他们对允许的字符没有进一步的限制,所以你可以坚持RFC 3986中的定义。
取决于很多因素......可能来自"没有任何反应"到"不再工作"。
网址是否通过将非法字符编码为其他内容来自行修复?
URI无法自行修复,它只是一个字符串。
使用此URI的客户端(浏览器,服务器,电子邮件客户端等)可能尝试根据自己的规则修复URI(或使用无效的URI)。
另请注意,URI与链接到(或存储等)文档中的URI之间存在差异 宿主语言(例如,HTML)可能具有要编码的规则。这样做不更改URI,只更改URI在本文档中的存储/指定方式。
例如,有效的URI http://example.com/a&b
必须在HTML文档中这样链接:
<a href="http://example.com/a&b">Link</a>
但URI仍然是http://example.com/a&b
,而不是http://example.com/a&b
。