1

据我了解,一个 URL 由以下字段组成:

  • 协议(http、https、ftp 等)
  • 用户名
  • 用户密码
  • 主机地址(IP 地址或 DNS FQDN)
  • 端口(可以隐含)
  • 服务器文档根目录中的文档路径
  • 参数和值集
  • 文档部分 (#)

作为

协议://用户:密码@主机:端口/路径/文档?arg1=val1&arg2=val2#part

但我刚刚遇到了在路径部分使用“http://”的示例:有一个重定向服务(显示广告并为您通过它路由的流量付费)它只是添加了一个目标 URL(以完整形式,与“http://”)到它自己的。从标准的角度来看,它被认为可以吗?它不会破坏任何东西吗?通常我不会期望在有效 URL 中遇到“//”双斜杠、冒号或“#”,但在上面示例中的位置。

4

1 回答 1

1

不,从标准的角度来看是不行的。

根据RFC-2396 中的第 3.3 节路径组件,路径不能包含以下字符 -"/", ";", "=", and "?"

通常,浏览器会在发出 http 请求之前对此类格式错误的 URI 进行编码,这就是它在实践中起作用的原因。

于 2012-08-27T13:28:42.233 回答