【发布时间】:2015-08-04 18:53:34
【问题描述】:
如果出现非法字符会怎样? URL 是否通过将非法字符编码为其他内容来自行修复?
【问题讨论】:
如果出现非法字符会怎样? URL 是否通过将非法字符编码为其他内容来自行修复?
【问题讨论】:
正如here解释的那样
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=。 任何其他字符都需要使用百分比编码进行编码 (%hh)。 URI 的每一部分对内容有进一步的限制 字符需要用百分比编码的单词来表示。
【讨论】:
RFC 3986 定义在哪些 URI 组件中允许使用哪些字符。
针对特定 URI schemes 的 RFC 可能会进一步限制这一点。
如果您对 HTTP/HTTPS URI 感兴趣:它们在 RFC 7230 中定义。 AFAIK 他们对允许的字符没有进一步的限制,所以你可以坚持 RFC 3986 中的定义。
取决于许多因素……可能是“什么都没有发生”到“不再起作用”。
URL 是否通过将非法字符编码为其他内容来自行修复?
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&amp;b,而不是 http://example.com/a&amp;b。
【讨论】: