2011-07-23 29 views
3

我已經看到一些pages指的是什麼似乎是絕對URI與主機,但沒有協議。例如:支持協議的絕對URI,包含主機,在HTML中?

<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script> 

我的假設是,這意味着「使用相同的協議,因爲我們現在上什麼」,所以父頁面會要求https://mc.yandex.ru/metrika/watch.js如果自己的協議是https

該語法是否正確?標準的一部分?這是什麼意思?

回答

3

它被稱爲「網絡路徑參考」。此文檔可在RFC 3986中找到。具體而言,見4.2節:

以兩個斜槓字符開頭的相對引用被稱爲
網絡路徑參考;這種引用很少使用。

和5.4節:

在與相對引用被轉換到它的目標URI如下的

http://a/b/c/d;p?q 

良好限定的基URI的表示...

"g:h"   = "g:h" 
... 
"//g"   = "http://g" 
... 

所以URI URI使用雙斜槓進行藝術轉換以匹配基本URI。我知道的一個用途(實際上是我見過的唯一用途)就是使用CDN時(例如,通過Google CDN包含jQuery時)。 Google在http協議上託管一個版本,另一個在https協議上,使用這種URI格式將導致加載正確的版本,無論您使用的是哪種協議。

更新(剛剛發現和閱讀this article

看來,使用整個頁面此URI格式可以防止「此頁包含安全和非安全項目」的錯誤在IE中。但值得注意的是,這種格式會導致通過link元素或@import指令包含的文件導致包含的文件被請求兩次。所有其他資源(如圖像和錨點)應按預期工作。