OGPとlink要素

HTTPS化の準備を始めるにあたって、HTMLで内部的に利用しているURLを対応するのは簡単だ。すべて相対URLに書き換えるだけで対応することができる。その相対URLの書き換えもパスの位置を考慮して最短にする必要もなく、//で始まる相対URLで行えば良い。aimg要素はもちろん、scriptlink要素も相対URLで問題ない。しかし外部から利用されるURLもどきではこの限りではない。例えばOGPなど利用することになるmeta要素では相対URLは使えず、OGPの仕様そのものでmeta要素に限定されており、そのパーサー実装のひとつであるFacebookでも解釈できない(できなかった)。

OGPはRDFa Liteだが、なぜかmeta要素で記述すると決められている。meta要素ではURLの解決が行われないので、URLスキームは省略できない(仮にFacebookが解釈できるようになっていたとしてもそう書くべきではないだろう)。もちろんCMSやそれに類するものを使っていれば書き換えは機械的に行うことは可能だが、そういう問題ではないだろうし、書き換えた時点でユーザーのキャッシュが破棄されることにもなる。

OGPと似ているもののRDFa LiteのモドキですらないTwitter Cardsではlink要素を使えたりもするが、相対URLへの対応は挙動が不審だった。少なくとも画像(twitter:image)についてはパーサー自体は通すものの表示には対応してくれないようだ。

URLの変更は気軽に行われるべきではないので、それだけを考えていれば良かった時代ではこういう仕様でもあまり問題はなかった。しかしHTTPS化の有形・無形の圧力と欲求にさらされることで、こういったウェブサービスの仕様がフレキシブルに対応できないものとなっている点が表面化してきてしまった。


結局はこちら側からはどうにもできないので、やるしかない。手元ではCMSの設定でURLスキームの切り替えを簡単に行えるように対応させつつあり、ようやく準備は完了してきた。しかしよくわからない人達が勝手に作った標準っぽいオレオレ仕様を考慮して苦労するのは割に合わないし、すっきりしない。