据我了解,URL 由以下字段组成:
- 协议(protocol)(http、https、ftp 等)
- 用户名
- 用户密码
- 主机地址(IP 地址或 DNS FQDN)
- 端口(可以隐含)
- 服务器文档根目录中的文档路径
- 一组参数和值
- 文件部分(#)
作为
protocol://user:password@host:port/path/document?arg1=val1&arg2=val2#part
但是我刚刚遇到了一个在路径部分使用“http://”的例子:有一个重定向服务(显示广告并为您通过它路由的流量付费)它只是添加一个目标 URL(在完整形式,带有“http://”)。从标准的角度来看是否可以?它不会破坏任何东西吗?通常我从没想过会在有效的 URL 中遇到“//”双斜杠、冒号或“#”,但它们出现在上面示例中的位置。
最佳答案
不,从标准的角度来看,这是不行的。
根据 Section 3.3 Path Component in RFC-2396 ,路径不能包含以下字符 - “/”、“;”、“=”和“?”
通常,浏览器会在发出 http 请求之前对此类格式错误的 URI 进行编码,这就是它在实践中起作用的原因。
关于http - 可以使用http ://inside an URL body?吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12141922/