X-Frame-Options とは、 Web ページの iframe への埋め込みを制御する HTTP レスポンスヘッダーです。クリックジャッキング攻撃の防止に使用され、ページが意図しないサイトの iframe 内に表示されることを防ぎます。
現行で有効な値は DENY (すべての iframe 埋め込みを禁止) と SAMEORIGIN (同一オリジンからの埋め込みのみ許可) の 2 つです。かつて存在した ALLOW-FROM uri (指定したオリジンからの埋め込みのみ許可) は廃止済みで、 MDN のリファレンス (2026 年 7 月更新版) によれば現行ブラウザはこのディレクティブを含むヘッダー自体を無視します。つまり ALLOW-FROM を指定すると保護そのものが失われるため、特定のオリジンだけを許可したい場合は CSP の frame-ancestors を使います。また、このヘッダーは HTTP レスポンスヘッダーとしてのみ有効で、 meta タグの http-equiv で指定しても効きません。
X-Frame-Options と CSP の frame-ancestors ディレクティブは同じ目的を持ちますが、 CSP の方が新しい仕様であり、複数のオリジンを指定できる柔軟性があります。両方を設定した場合、 CSP の仕様 (Level 2) では frame-ancestors を適用し X-Frame-Options は無視するべきだとしています。新規実装では CSP の frame-ancestors を基本とし、 frame-ancestors を解釈しない古い環境からのアクセスも想定するなら X-Frame-Options (DENY か SAMEORIGIN) を併設します。両方を置く場合は互いに矛盾しない値にしておくと、どちらか一方しか解釈しない環境でも保護が途切れません。
短縮 URL サービスでは、管理画面やプレビューページに X-Frame-Options: DENY を設定し、 iframe への埋め込みを禁止することで、クリックジャッキング攻撃を防止します。リダイレクト用のエンドポイントは iframe 内で使用されるケースがほぼないため、同様に DENY を設定して問題ありません。