URL 包含方案但不包含权限(主机名)?

标签 url https

从 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/

相关文章:

https - 戈朗 : Right way to serve both http & https from Go web app with Goji?

c# - 尝试从 WebAPI 获取 GET 时无法验证 HTTPS 连接

ssl - https 不适用于我安装的 ssl(nginx 和 letsencrypt)

java - CertPath 问题 - HTTPS 服务器不显示 CA 证书

security - "shareable"url 安全指南

url - 如何动态生成唯一的(短的)URL 文件夹名称……比如 Bit.ly

java - 在网络的 ImageView 中显示 .jpg

excel - 如何使用 VBA 读取安全共享点目录?

python - 使用 Python 从 URL 获取子域

java - 无法在小程序中 getInputStream()