【问题标题】:Network-Path Reference URI / Scheme relative URLs网络路径参考 URI / 方案相对 URL
【发布时间】:2011-04-04 17:30:33
【问题描述】:

方案相对 URL(网络路径引用)是我刚刚发现的 - 您不指定 URL 的方案,它会从当前上下文中获取它。

例如: 如果当前方案是 HTTPS,<img src="//domain.com/img.png" /> 将解析为 https://domain.com/img.png,如果不是,则解析为 http://domain.com/img.png

这似乎是一种非常简单的方法,可以解决调用 SSL 页面上的外部脚本或图像的那些讨厌的问题,而不会引发页面上的某些内容不安全的可怕错误。

好处似乎很明显,但我似乎无法找到关于此的大量信息,并且想知道是否有人对方案相对 URL(好或坏)有任何经验或参考?

虽然我试图发现是否有任何浏览器会导致问题(我已经成功使用 IE6-8、Chrome 和 Firefox),但我也有兴趣了解是否有人有任何使用经验这在不同的语言。例如,如果您要在 ASP 中发出带有方案相对 URL 的 Response.Redirect,它会起作用吗?

【问题讨论】:

标签: html url browser response.redirect protocol-relative


【解决方案1】:

//domain.com/img.png 是一个完全有效的 URI 语法,符合 RFC 3986: Section 4.2

它是相对于当前的scheme,因此正如你所提到的,它在 http 和 https 之间切换时非常有用,因为你不需要显式指定方案。

所有现代浏览器都会理解这种格式,包括 IE 6。

进一步阅读 Stack Overflow:

【讨论】:

  • 这样的 URL 并不新鲜。它们是自 1995 年以来 URL 规范的一部分(请参阅 RFC 1808)。
  • 我不一定相信任何类型的客户端都能正确解析这些 URL,但主流浏览器肯定会。
  • 那么谷歌有什么理由选择另一种方式吗? - code.google.com/apis/analytics/docs/tracking/…
  • @Dan Atkinson:对于谷歌分析来说,与任何不起眼的用户代理兼容可能更为重要,而且他们可能发现这更可靠。不过,我想一般来说,我们的 Web 应用程序不必与 Netscape 2 时代的浏览器兼容。
  • 这里有一个链接解释了为什么谷歌不将它用于谷歌分析。简而言之,它会导致 Windows XP 上的 IE6 出现问题(但仅仅是因为该浏览器不支持 TLS SNI)。 paulirish.com/2010/the-protocol-relative-url/#comment-37852
【解决方案2】:

如果您想支持 IE 7 和 8,您可能需要考虑样式表的方案相对 URL 将导致它们被下载两次:

[...] 如果您在 Internet Explorer 7 和 8 中尝试此操作,您会看到使用协议相对 URL 指定的样式表被下载了两次。

如果开发人员希望他们的页面在 Internet Explorer 7 和 8 中尽可能快,则应避免对样式表使用协议相关 URL。

来源:http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/

【讨论】:

  • +1 提醒。我的反应是我很好。迟钝的 IE 会更加迟钝,让更好的浏览器看起来更好。
猜你喜欢
  • 2014-08-04
  • 1970-01-01
  • 2015-08-26
  • 2013-11-23
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多