WEBアプリ開発でframeタグを使うべきではない理由


皆さんご存知の通り、frameタグはHTML4では非推奨とされ、さらにHTML5では廃止されています。
しかし、frameタグを使っているWEBアプリの開発に携わることになったため、
プログラマー目線で使わないほうがいいと思った理由を書きます。
フロントエンドが苦手なプログラマーはこれを機に今後frameタグを使わないようにしてください。

大きな理由は以下2つ

CSRF対策のワンタイムトークンが(たぶん)使えない

※「たぶん」と書いたのは、試したことがないためです。

FWによってはリクエスト毎にワンタイムトークンが発行され、
意図した遷移元からちゃんと遷移しているかをチェックできるものがあるが、
フレームで2つにぶった切ったら1つのワンタイムトークンが
同じタイミングで2回使われることになり、結局使えない。

フレームで別れている各ページの実行順は毎度同じではないため、バグの元になりやすい

ローカル等の開発環境の場合、ネットワークが速いため、
うまいことframesetタグで記述した順序で実行されることが多いんですが、
本番環境では、実行順序がバラバラになったりして、
開発環境では見つからなかったバグが見つかったりします。

フレームの各Actionクラスで共有しているセッションがある場合にバグになったりします。

他、小さな理由

  • Visual Eventが使えない。
  • Javascriptで他フレームと連携するときにちょっと面倒
  • 見た目がダサい…