HTTPSページ上のカウンター
サイトはHTTPSで動いている。訪問者には鍵マークが見える。ところが、別のサイトから何かを貼り付けたとたん、その鍵マークが消えてしまう——あるいは、貼り付けたものがそもそも表示されなくなる。
これは混合コンテンツ(mixed content)であり、理解するのに10分の価値がある。多くの古い埋め込みウィジェットを静かに壊してしまうからだ。
ブラウザがどう対処するか
HTTPS経由で読み込まれたページは、自分自身の一部を平文のHTTP経由でこっそり取得することを許されていない。暗号化されていない画像リクエストを改ざんできる盗聴者は、訪問者に見えるものを改ざんできてしまう。だからブラウザは、両者が混ざることを拒否する。
画像やスクリプトについては、最近のブラウザはリクエストを自動的にHTTPSへ引き上げるか、完全にブロックするかのどちらかを行う。どちらになるかはブラウザとリソースの種類次第であり、どちらの結果も、あてにしていいものではない。
Stats4Uはどうなっているか
二か所で対処済みだ。スクリプトには計測エンドポイントのアドレスがHTTPSとして書き込まれているため、それを読み込んだページがどう配信されたかにかかわらず、発行されるリクエストはすべて暗号化される。そしてサーバー側も、平文のHTTPに対しては恒久的なリダイレクトでHTTPSへ応答する——これは本稿を書くにあたって、スクリプト自体とカウンター画像自体の両方について確認済みだ。
したがって、現行のスニペットで埋め込んだカウンターは、鍵マークを壊すことはなく、何か設定する必要もない。
それでも問題になりうる、唯一のケース
誰かがかつて、カウンタースクリプトにリンクするのではなく、それをサイト側にコピーしていた場合——これはよくある習慣であり、今日に至るまでそうしているページもある——そこでは、それが行われた時点で凍結されたコピーが、今も動いていることになる。十分に古いコピーには平文のHTTPアドレスが埋め込まれており、当方の側でどれだけ修正を行っても、そこには届かない。
確認には2分で済む。ページのソースを表示し、http://に続いて当サイトのドメインがないか検索する。見つかった場合は、その埋め込みコード全体を、統計ページにある現行のスニペットに置き換える。
ついでに言えば、スクリプトのコピーをそもそもホストするのではなく、リンクする形にしておく価値がある。その理由については別の投稿がある。これはカウンターに限らず、はるかに広く当てはまる話だ。