我看过一些网站使用//somedomain.com/images/img.jpg
而使用http://somedomain.com/images/img.jpg
其中也包括http:
。在src或href中使用“http://”和“//”之间有什么区别?
这两者之间有区别吗?浏览器是否正在纠正丢失的http:
,这些人正在懒惰?我好奇背后的推理。
我看过一些网站使用//somedomain.com/images/img.jpg
而使用http://somedomain.com/images/img.jpg
其中也包括http:
。在src或href中使用“http://”和“//”之间有什么区别?
这两者之间有区别吗?浏览器是否正在纠正丢失的http:
,这些人正在懒惰?我好奇背后的推理。
如果您已经通过http
登录该网站,则会假定您正在讨论http
并通过相同的协议连接到同一台服务器。同https
。如果您使用http
并且想要使用https
,则需要在href
中指定协议。
因此,这将用于可以在'http'或'https'上查看的网站上? – chadley 2010-07-08 23:55:37
@chadley - 本地使用的意图较少,但远程使用。如果'superanalytics.com'同时提供HTTP和HTTPS,它可能会告诉您将其分析脚本包含在URI'// superanalytics.com/ analytics.js'中。这样,如果你运行HTTP,SuperAnalytics也会。如果您运行的是HTTPS,SuperAnalytics也会。然后你不会得到那些讨厌的“这是一个安全的网站,上面有不安全的东西!”警告。 – Matchu 2010-07-09 00:24:57
感谢您澄清matchu。现在你已经指出了一个例子,这是非常有意义的。 – chadley 2010-07-09 00:29:03
我从来没有见过//somedomain.com/images/img.jpg
,不认为这是合法的。
我看过/images/img.jpg
这意味着“使用当前域”。如果您有多个指向同一网站的网址(例如,aaaaa.com & aaaaa.net),这会很有帮助。
这实际上是合法的。 – 2010-07-09 00:12:01
不是我以前见过它,而是一个有效的URI参考。从语法:
URI-reference = URI | relative-ref
relative-ref = relative-part [ "?" query ] [ "#" fragment ]
relative-part = "//" authority path-abempty
| path-absolute
| path-noscheme
| path-empty
,其中作为绝对URI是:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
欲了解更多信息,请随时免费阅读的RFC3986
//somedomain.com/images/img.jpg
剩下的是一个完全有效的URI语法为每RFC 3986: Section 4.2。
它相对于当前的scheme,因此在切换http和https时非常有用,因为您不需要指定方案。
所有现代浏览器都明白格式,包括IE 6
方案相对URL的,当你服HTTPS网站,你想与大家分享喜欢的样式表,图像同样的静态内容是特别有用的,脚本等等来自HTTP站点。硬编码在像<link href>
,<script src>
,<img src>
等静态内容链接http:
和浏览网页本身在https:
将导致平均网页浏览器弹出一个安全警告,如下面的知名IE安全警报:
通过方案相关URL提供“非安全”内容将解决此问题。
当你说你已经“看过网站”,你在哪里见过他们?它是打印的还是网站链接的名称? – 2010-07-08 23:53:44
我的意思是查看它们的源代码。不在印刷品或类似的东西中。 – chadley 2010-07-08 23:56:33