从 URL 中省略“权限”组件(通常是主机名)但指定方案(通常是 http:
或 https :
) ?
例如,这些网址有效吗?
https:login.html (relative hostname and path)
https:/auth/login.html (relative hostname, absolute path)
当然,预期的行为是使用当前主机名 - 路径(相对)。
(顺便说一句,这假设方案后面的 //
是权限(主机)组件的一部分,我认为这是正确的解释)
动机是(常见)要求网站的某些页面通过 https 访问,其他页面通过 http 访问,我们希望使用相对 URL 而不是绝对 URL(以在不同环境中进行测试)。
最佳答案
根据RFC1738双斜杠 //
是协议(protocol)(方案)特定数据的一部分(因此根据本文档,它们不是强制性的)。
但是 3.2.2 中的 HTTP 协议(protocol)( RFC2616 )使双斜杠成为方案的一部分,因此它是必须的。没有它们就没有有效的 HTTP URL。
来自 RFC2616 3.2.1:
URIs in HTTP can be represented in absolute form or relative [ ... ] The two forms are differentiated by the fact that absolute URIs always begin with a scheme name followed by a colon.
...因此,如果您指定方案,那么它就已经被视为绝对 URI。
关于URL 包含方案但不包含权限(主机名)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568569/