DjangoのWebページをframeで読み込む方法

Djangoのデフォルトの設定では、他ブラウザーからで読む込むことができない。(クリックジャッキング対策)

結論

  • setting.pyでProjectにX_FRAME_OPTIONSを設定
  • views.pyでmethod毎にX_FRAME_OPTIONSを除外する

setting.py

X_FRAME_OPTIONS = 'SAMEORIGIN'

views.py

from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_exempt  // add

@xframe_options_exempt  // add
def ok_to_load_in_a_frame(request):
    return HttpResponse("This page is safe to load in a frame on any site.")

docs.djangoproject.com

  • deny
    • デフォルト
    • 自他サイトどちらも読み込み不可に
  • sameorigin
    • 同じサイトであれば読み込み可能
  • allow-from uri(廃止)
    • uri で指定したサイトから読み込み可能

X-Frame-Options

developer.mozilla.org