在src或href中使用“http://”和“//”之间有什么区别?

时间:2010-07-08 23:50:19

标签: html http

我看到有些网站使用//somedomain.com/images/img.jpg与使用http://somedomain.com/images/img.jpg,其中包含http:

这两者有区别吗?浏览器是否正在纠正丢失的http:并且这些人都在懒​​惰?我对这个推理感到好奇。

5 个答案:

答案 0 :(得分:11)

如果您已经通过http访问了该网站,则会假设您正在讨论http并通过相同协议连接到同一服务器。与https相同。如果您在http并且想要转到https,则需要在href中指定协议。

答案 1 :(得分:7)

不是我之前看过它,但它是一个有效的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

的其余部分

答案 2 :(得分:3)

当您为HTTPS网站提供服务并希望与HTTP站点共享相同的静态内容(如样式表,图像,脚本等)时,方案相对URL特别有用。在http:<link href><script src>等静态内容链接中硬编码<img src>并在https:上查看网页本身会导致普通的网络浏览器弹出安全警告,如下面众所周知的IE安全警报:

alt text

alt text

通过方案相对URL提供“非安全”内容可以解决此问题。

答案 3 :(得分:2)

根据{{​​3}},

//somedomain.com/images/img.jpg是完全有效的URI语法。

它相对于当前RFC 3986: Section 4.2,因此在http和https之间切换时非常有用,因为您不需要指定方案。

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

答案 4 :(得分:-1)

我从未见过//somedomain.com/images/img.jpg,也不认为这是合法的。

我看过/images/img.jpg表示“使用当前域名”。如果您有多个指向同一网站的网址(例如,aaaaa.com&amp; aaaaa.net),这会很有帮助。