最近私はworkingこのようなコードブロックを見ました:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
また、RFC 2396(URI構文)およびRFC 2616(HTTP 1.1)によると、2つのスラッシュで始まるこれらのURIは有効ですが、残念ながらRFCでは実際に説明されていません。
ブラウザーがこれらのURIを処理する/すべき/処理する方法を説明するリソースを誰かに教えてもらえますか?
探しているリソースは RFC 3986 です。
セクション4.2およびセクション5.4を参照してください。後者からの引用:
参考解像度の例
明確に定義されたベースURIを持つ表現内:
http://a/b/c/d;p?q
相対参照は、次のようにターゲットURIに変換されます。
"g:h" = "g:h" "g" = "http://a/b/c/g" "./g" = "http://a/b/c/g" "g/" = "http://a/b/c/g/" "/g" = "http://a/g" "//g" = "http://g" "?y" = "http://a/b/c/d;p?y" "g?y" = "http://a/b/c/g?y" "#s" = "http://a/b/c/d;p?q#s" "g#s" = "http://a/b/c/g#s" "g?y#s" = "http://a/b/c/g?y#s" ";x" = "http://a/b/c/;x" "g;x" = "http://a/b/c/g;x" "g;x?y#s" = "http://a/b/c/g;x?y#s" "" = "http://a/b/c/d;p?q" "." = "http://a/b/c/" "./" = "http://a/b/c/" ".." = "http://a/b/" "../" = "http://a/b/" "../g" = "http://a/b/g" "../.." = "http://a/" "../../" = "http://a/" "../../g" = "http://a/g"
これは、ベースURIがhttp://a/b/c/d;p?q
であり、//g
を使用すると、相対参照がhttp://g
に変換されることを意味します。
これらは、 プロトコル相対URLです。 現在のプロトコルを維持しながら、アドレスを指します。
この表記は、「混合コンテンツ」問題を回避するためによく使用されます(同じHTTPSページ上のhttp
およびhttps
リソースについて不平を言うIE警告メッセージ)。
アップデート:RFC 3986の公式ドキュメント :
2つのスラッシュ文字で始まる相対参照は、ネットワークパス参照と呼ばれます。そのような参照はめったに使用されません。単一のスラッシュ文字で始まる相対参照は、絶対パス参照と呼ばれます。スラッシュ文字で始まらない相対参照は、相対パス参照と呼ばれます。
これらはプロトコルに依存しないURLです。 Webページがhttpsで提供される場合、要求はhttpsを使用します(httpの場合はhttp)。
Paul Irishは、定型コードに含めることで、それらを普及させたようです。
httpまたはhttpsに依存しないだけでなく、また、file、ftpなど.
つまり、ローカルホストのブラウザーで。htmファイルを直接開くと、ブラウザーは/ /as as file protocolとページは機能しません。 Electron、PhoneGapなどのツールを使用する「ネイティブ」アプリとして、パックされたWebサイトで問題を引き起こす可能性があります。
例:
<script src="//mywebsite.com/resource.js"></script>
に
<script src="file://mywebsite.com/resource.js"></script>