URL/链接中合法和非法字符是什么?

4

如果有非法字符会发生什么?URL会通过将非法字符编码为其他字符来自我修复吗?

2个回答

8

这里所述:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=. 其他任何字符都需要使用百分号编码(%hh)。URI 的每个部分还有关于哪些字符需要用百分号编码的进一步限制。


4

允许的字符

RFC 3986 定义了URI组件中允许使用的字符。

特定URI方案的RFC可能会进一步限制这些字符。

如果您对HTTP/HTTPS URI感兴趣:它们在RFC 7230中定义。据我所知,它们没有关于允许字符的进一步限制,因此您可以遵循RFC 3986中的定义。

非法字符会导致什么情况?

取决于许多因素……可能是从“什么都不会发生”到“不再起作用”的任何情况。

URL是否通过将非法字符编码为其他内容来修复自身?

URI无法自我修复,它只是一个字符串。

使用此URI的客户端(浏览器、服务器、电子邮件客户端等)可能根据其自己的规则尝试修复URI(或使用无效的URI)。

URI与链接

还要注意URI和在文档中链接(或存储等)此URI之间的区别。
宿主语言(例如HTML)可能有规则要进行编码。这不会改变URI,只会改变在该文档中存储/指定URI的方式。

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接