不在 URL 中编码括号有啥危险?
Posted
技术标签:
【中文标题】不在 URL 中编码括号有啥危险?【英文标题】:What's the danger of not encoding brackets in URL?不在 URL 中编码括号有什么危险? 【发布时间】:2014-01-21 11:53:19 【问题描述】:我已经阅读了这个问题:Is it ok to have brackets in URL? 和相关的RFC 3986。
对这个问题的回答说 [
和 ]
被 RFC 归类为 gen-delims,因此应该被编码,但 没有解释为什么不这样做会有问题的。
所以,我不明白这样的 URL 可能有什么问题:
http://example.com/?foo[bar]=baz
为什么&
应该被编码是显而易见的,因为它被用作查询参数之间的分隔符。
但是[
和 ]
在 URL 中的用途是什么,如果它们没有经过 URL 编码,它们的意图会变得混乱吗?
【问题讨论】:
【参考方案1】:来自RFC 3986 section 3.2.2:
由 Internet 协议文字地址(版本 6 [RFC3513] 或更高版本)标识的主机通过将 IP 文字括在方括号(“[”和“]”)中来区分。
例如,你本地机器的 IPv4 地址是 127.0.0.1,所以你可以通过 url 访问它
http://127.0.0.1/
IPv6 等价物是 ::1
,所以 url 是
http://[::1]/
【讨论】:
我看过这条线,但不确定是否理解。可以举个例子吗? 那回答了我的问题,谢谢。不幸的是,RFC 强制在 URL 参数中编码方括号,尽管它们似乎只能用于主机部分。以上是关于不在 URL 中编码括号有啥危险?的主要内容,如果未能解决你的问题,请参考以下文章
当 url 包含编码的 & 符号时,MVC WEB API 路由失败