SimpleIsm

舞台裏は乱雑に、見えるところはシンプルに。

SSLを使っているサイトへのリンクのプロトコルをhttp:から書くかhttps:から書くか

リンク先がSSLを使っていることが分かっているとき、リンクのhref属性をhttp:から書くのと、https:と 「s」 を付けて書くの、どっちが正しいの?という話。

僕はhttp:から書くのが正しいと思っている。http:でアクセスしてもリンク先がSSLを使っていればhttps:になるし、例えばTwitterがSSLを使わなくなったら、https:でアクセスした場合、アクセスできなかったり、警告文が出たりといったリスクもあるし。

SSLを使っている場合
http://twitter.com/hoge
アクセスできる
https://twitter.com/hoge
アクセスできる
SSLを使っていない(使わなくなった)場合
http://twitter.com/hoge
アクセスできる
http://twitter.com/hoge
アクセス出来ないもしくは何かしらの不都合が起き得る

まぁそんなことはしないと思うけれども、そういった可能性もあるし、ならばhttp:でアクセスして、SSLとしてリクエストを返すかどうかは、そのリンク先に委ねた方が良いのではないかな、と思っている。CSSでの記述に関しても、相対パスや絶対パスで書けばSSLを使っているか使っていないかでプロトコルは決まるし(https://~のサイトから読み込むCSSは、画像パスが /hoge.png と指定してあれば https://~/hoge.png となる)。(プロトコルをhttp:で限定しているのは、リンク先がWWW(ハイパーテキスト? ハイパーメディア?)だと分かり切っているから。でもそれだと先ほどの「SSLを使っていると分かり切っているから」という理由と同じになるので、本当は//www.example.com/のようにスラッシュから書くのが正しいのだと思うけど、今回はhttp:に限定する。あとはhttps:のサイトからCSS内の画像パスなどをhttp:で記述すると警告文が出たりするみたいだけど(SSLページでブラウザにセキュリティ警告メッセージを出させないコツ « DRYOUT プログラマー社員のブログ)、それも今回は割愛。あくまで外部サイトにアクセスするときの話に限定する。)

…以上が何も調べないで漠然とそうだと思っていた(思い込んでいた)内容。

実際に調べてみた。というかみんなの小粋空間で大体答えが出てた。 => HTMLやCSSでのプロトコル表記(http:、https:)の省略について: 小粋空間

ただ、結局表題の「SSLを使っているサイトへのリンクのプロトコルをhttp:から書くかhttps:から書くか」どっちが正しいのか分からなかった。どっちも正しいのかな…。

とりあえずhttp://t.co/https://t.co/ともにTwitterへのリンクはhttp:からだった。