【Web全般】URL が ‘//’ から始まっている href や source の謎

Web関連の開発をしていると頻繁に以下のようにスラッシュが2つ並んでいる ‘//’ から始まる URL を見かけます(呼び方としてはダブルスラッシュとでも言うのでしょうか)。

これってどういう意味なんだろうとずっと思っていたので調べてみたら、どうやらプロトコル(スキーム)を除外した絶対パスを意味しているようでした。

どういうことかというと、「http://~」 や 「https://~」「ftp://~」というように : の前についているスキームは用途によって変わります。例えば従来の http://example.com がセキュリティ向上のために SSL 対応した場合には「https://~」 とスキームが https に変化します。このとき、img の source が http://example.com/images/a.png などとスキーム付きで絶対パスになっているとせっかく SSL 対応したのに画像の取得は http で行われることになります。
そのため、SSL 対応に伴って全てのソースコードを調べて全て https に変更しなければならなくなってしまいます。

こうした事態を防ぐためにサイト製作時に最初からスキームを除外して //example.com/images/a.png としておくことでアクセスしているスキームでアクセスを試みることになるため、http -> https の変更をする必要がなくなるのだそうです。(http でアクセスしていれば http://~ と、https でアクセスしていれば https://~ と補完される)

便利ですね。

ダブルスラッシュなんて他で見かけることはないのでプロトコルの後の部分を意味しているのだろうと漠然と思っていたけれどよくよく考えるとプロトコルはあくまでもアクセスプロトコルで、そのものの場所(絶対パス)を示しているのは // 以降なんですよね。調べてよかった。