cross-originでiframeが埋め込めないとき
What I want to do
あるサービスをwww上で展開しているのだが、元のドメインのURLをそのまま晒すのがちょっと嫌なのでそれを隠すためにurl-forwardingをしたい。
tkドメインを試す
*.tkとかいうドメインはタダで手に入る。(但し有効期限がある) 登録画面は割と癖のある挙動。登録から割り当てまで時間がかかるので注意。メアドを登録せずに匿名でも登録できるのがウリか。信頼性は低そう。 無料版の範囲だとhttps対応していない。
これでURL-forwardingを試してみたが、やっていることはforward先のurlをiframeで埋め込むことだった。 但し、あるサービスはX-Frame-Options:SAMEORIGINであったので、このままではcross-originエラーが出て何も表示されない。
URL-forwardingといっても結局はforward先のurlをiframeで埋め込むのであれば、わざわざ独自ドメインをとらなくてもどこか信頼性の高そうなドメインにホスティングすればよいということになった。
動的にiframeを埋め込むようにする
人力検索はてなでも質問がされていた。
が、Stackoveflowが解決策としては一番わかり易かった。
cross-originを外すために、以下のサイトを媒介する。
An open source alternative to AnyOrigin
このサイトにパラメータとしてurlを渡すと、html部分を含んだ結果をJSON形式で取得できるので、コールバックでcontentsだけを取得して、divに注入するようにすればよい。ただしリンクは元のドメインのURLのままなので、このページからのリンクもそれぞれ静的なページで用意して、……としない限りはリンク先がおかしいぞ、となってばれてしまう。(もちろんソースコードを見れば一発だけれど) さすがに全ページを静的なページでプロキシするのは現実的でないので、トップページだけiframeの埋め込みでごまかすことで妥協しようと思う。