URL / Link中的合法和非法字符是什么?

时间:2015-05-22 16:47:00

标签: url hyperlink web

如果存在非法字符会怎样? URL是否通过将非法字符编码为其他内容来自行修复?

2 个答案:

答案 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与链接到(或存储等)文档中的URI之间存在差异 宿主语言(例如,HTML)可能具有要编码的规则。这样做更改URI,只更改URI在本文档中的存储/指定方式。

例如,有效的URI http://example.com/a&b必须在HTML文档中这样链接:

<a href="http://example.com/a&amp;b">Link</a>

但URI仍然是http://example.com/a&b,而不是http://example.com/a&amp;b