フレーム内のリンクをクリックしても反応しない場合の原因はこれ
フレーム内のリンクをクリックしたときに、
FirefoxやGoogle Chromeで反応がない場合。
またはInternet Explorerで以下のエラーがでる場合。
その原因は、HTTPヘッダの「X-Frame-Options」が原因です。
このコンテンツはフレーム内で表示できません
この Web サイトに入力する情報のセキュリティを保護するため、このコンテンツの発行者はフレーム内での表示を許可していません。
X-Frame-OptionsはHTTPレスポンスヘッダに指定するオプションヘッダのひとつ。レスポンスとして返されるコンテンツをフレームの内部に表示して良いかどうかを指定するといった機能になっている。
フレームから呼び出されている先のページに、X-Frame-OptionsでDENYが(外部サイトの場合はSAMEORIGINも)設定されていると、このような症状になるようです。
targetで_topを指定していたつもりが、_selfを指定していた箇所があり、いつの間にかリンクが開かなくなっていて焦りました(いつから変わったんだろう……)。
※_selfだと問題なく開きます
target属性は、HTML4.01 strict、XHTML1.0 strict、XHTML1.1で廃止となっていたため(HTML5では使えます)最近はあまり指定している人もいないと思うのですが、あえて使うのであれば気を付けないといけませんね。
痛い目にあいましたが、X-Frame-Optionsを学習したので結果としてヨシ(ということにしましょう!)
あとはフレームで勝手に呼び出されるのを防ぐため、X-Frame-Optionsを利用するのもいいですね!(って、これが本来の利用法…)
X-FRAME-OPTIONS を用いたクリックジャッキング対策 - GrayRecord
http://www.cworld2000.com/blog/archives/2009/03/xframeoptions.html
target=”_blank”を使わずに、rel=”external”、rel=”external nofollow”で新しいウィンドウを開く方法 - 清音のSEOブログ
http://seofromusa.com/wordpress-customizazion/target-blank-rel-external-nofollow/