我可以将所有的http://链接改为//吗?

戴夫沃德说,

这并不是轻量阅读,但RFC 3986第4.2节规定了完全合格的URL,它们完全省略了协议(HTTP或HTTPS)。 当URL的协议被省略时,浏览器会使用底层文档的协议。

简而言之,这些“无协议”的URL允许像这样的引用在您尝试使用的每个浏览器中工作:

//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js

起初看起来很奇怪,但是这个“无协议”URL是引用通过HTTP和HTTPS提供的第三方内容的最佳方式。

这肯定会解决我们在HTTP页面上看到的一系列混合内容错误 - 假设我们的资产可通过HTTP和HTTPS获得。

这完全是跨浏览器兼容? 还有其他警告吗?


我在发布前彻底测试过它。 在Browsershots可用的所有浏览器中,我只能找到一个不能正确处理协议相对URL的浏览器:一个叫做Dillo的模糊的* nix浏览器。

我收到的反馈有两个缺点:

  • 当您在浏览器中“打开”本地文件时,无协议URL可能无法正常工作,因为该页面的基本协议为file:///。 特别是当您使用无协议URL来访问CDN托管资源等外部资源时。 使用像Apache或IIS这样的本地Web服务器来测试http:// localhost地址是否正常工作。
  • 显然,至少有一个iPhone提要阅读器应用程序无法正确处理无协议URL。 我不知道哪一个有问题或者它有多受欢迎。 对于托管JavaScript文件,这不是一个大问题,因为RSS阅读器通常无视JavaScript内容。 但是,如果您将这些网址用于需要通过RSS进行联合播放的内容之类的媒体(例如,单个平台上的这种单一阅读器应用程序可能只占很少数量的阅读器),则可能会造成问题。

  • 考虑到是否应该这样做的问题,是否可以将其所有链接改为与协议相关的问题可能是没有意义的。 据爱尔兰保罗说:

    2014.12.17:既然SSL受到了所有人的鼓励,并没有性能方面的担忧,这种技术现在是一种反模式。 如果您需要的资产在SSL上可用,请始终使用https://资产。


    如果您使用无协议URL来加载样式表,则IE 7和8将下载它们两次:http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/

    所以,如果你喜欢高性能的话,这是为了避免CSS。

    链接地址: http://www.djcxy.com/p/42215.html

    上一篇: Can I change all my http:// links to just //?

    下一篇: How to go to website from list in JavaScript