我看到有些网站使用//somedomain.com/images/img.jpg
与使用http://somedomain.com/images/img.jpg
,其中包含http:
。
这两者有区别吗?浏览器是否正在纠正丢失的http:
并且这些人都在懒惰?我对这个推理感到好奇。
答案 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安全警报:
通过方案相对URL提供“非安全”内容可以解决此问题。
答案 3 :(得分:2)
//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),这会很有帮助。