【发布时间】:2011-06-17 10:24:47
【问题描述】:
Dave Ward 说,
阅读起来并不轻松,但section 4.2 of RFC 3986 提供了完全限定的 URL,它们完全省略了协议(HTTP 或 HTTPS)。当 URL 的协议被省略时,浏览器将使用底层文档的协议。
简单地说,这些“无协议”的 URL 允许这样的引用在您将要尝试的每个浏览器中工作:
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js起初看起来很奇怪,但这个“无协议”的 URL 是引用第三方内容的最佳方式,可通过 HTTP 和 HTTPS 访问。
这肯定会解决我们在 HTTP 页面上看到的一堆混合内容错误——假设我们的资产可通过 HTTP 和 HTTPS 访问。
这完全跨浏览器兼容吗?还有其他注意事项吗?
【问题讨论】:
-
我不久前在 IE 博客上读到了这项技术。但是当我尝试它时,它的效果并不好。如果我的网站使用 HTTPS,则浏览器 (Chrome) 仍在使用 HTTP 处理无协议 URL。
-
警告:切记不要在 HTTP 3xx 重定向中使用无方案 URI! HTTP 标头与此 URL 格式不兼容。如果您需要根据方案重定向,请使用 mod_rewrite 或类似的。
-
@user2596282 在 Chrome 和 Firefox 的现代版本中进行的实验与 HTTP 1.1 的(仍在草稿中)修订版不同意。 HTTPbis 工作组定义的规范(参见svn.tools.ietf.org/svn/wg/httpbis/draft-ietf-httpbis/latest/…)。不过,也许您所说的某些浏览器是正确的;您是否知道在位置标头中的协议相关 URL 上特别失败?
-
不要使用它们,它们丑陋且多余。
标签: http url https protocol-relative