可能性のある複製:
2つのスラッシュで始まるURI…どのように動作しますか?
現在のページの1つを保持するためにプロトコル(スキーム)を省略した絶対URL
スクリプトおよびリンクタグの//略記?誰もがこれを前に見たり使用したりしますか?
HTML5リセット のソースを調べていたとき、 次の行 に気付きました。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
URLが2つのスラッシュで始まるのはなぜですか?これはhttp://
の短縮形ですか?
「プロトコル相対URL」として最もよく知られています。これらは、例のJSファイルなどの要素をhttp
またはhttps
コンテキストからロードできる場合に特に役立ちます。プロトコル相対URLを使用することにより、実装を回避できます
if (window.location.protocol === 'http:') {
myResourceUrl = 'http://example.com/my-resource.js';
} else {
myResourceUrl = 'https://example.com/my-resource.js';
}
コードベース全体のロジックのタイプ(もちろん、example.com
のサーバーがhttp
とhttps
の両方を介してリソースを提供できると仮定します)。
顕著な実世界の例は、Magento E-Commerceエンジンです。パフォーマンス上の理由から、ショップのページはデフォルトでプレーンhttp
を使用しますが、チェックアウトはhttps
が有効になっています。
ハードコーディングされたリソース(つまり、サイトのヘッダーのプロモーションバナー)が非プロトコル相対URL(つまりhttp://example.com/banner.jpg
)によって参照されている場合、https
対応のチェックアウトに到達した顧客はやや不親切に迎えられます
「このページには安全でない要素があります」
プロンプト-想像できるように、技術に精通していない平均的な人を捨てます。
ただし、前述のリソースが//example.com/banner.jpg
を介して参照されている場合、ブラウザは適切なプロトコルを先頭に追加します。
tl; dr:http/httpsが混在する環境の可能性が少しでもある場合、リソースをロードするためにダブルスラッシュ/プロトコル相対URLを使用します。コンテンツを提供するホストがhttpとhttpsの両方が有効であると仮定します。
要求の作成方法に応じて、httpsまたはhttpが自動的に追加されます。