Djangoを有効にして、特定のビューを外部サイトに埋め込むことができるようにします。サイトの制限なしにできればできます。
私のviews.pyファイルに次のコードを追加しました。ここで、ビューfuturebigは埋め込みを有効にしたいものです。
from Django.views.decorators.clickjacking import xframe_options_sameorigin
...
@xframe_options_sameorigin
def futurebig(request):
...
return render_to_response('templates/iframe/future_clock_big.html', context_dict, context)
同じサーバーに埋め込むことができるだけなので、私には理解できません。
特定のビューのヘッダーを設定して、それを任意のWebサイトに埋め込むにはどうすればよいですか?
ちなみに、私は単なるフロントエンド開発者です。サイトを開発したバックエンド開発者は私と協力していないため、彼のコードを文書化することを拒否しました。私はそれをとても高く評価します。
ありがとう。
私の知る限り、Djangoバージョンは1.6です
あなたは正しい方向に進んでいますが、これを達成するために必要な正確なデコレータは「xframe_options_exempt」です。
from Django.http import HttpResponse
from Django.views.decorators.clickjacking import xframe_options_exempt
@xframe_options_exempt
def ok_to_load_in_a_frame(request):
return HttpResponse("This page is safe to load in a frame on any site.")
PS:Django 1.6はサポートされなくなりました。今すぐアップグレードを入手してください。
どうやらあなたはあなたの設定で以下を伝えるルールを設定することができます:
X_FRAME_OPTIONS = 'ALLOW-FROM https://example.com/'
また、今日では、CSPへの移行を検討する必要があります
Content-Security-Policy: frame-ancestors 'self' example.com *.example.net ;
最新のインターネットブラウザーには、HTTPヘッダーX-Frame-Optionsの組み込みシステムがあります。これは、フレームまたはiframe内でのリソースの読み込みを許可する設定と考えることができます。ヘッダーは2つの値を取ります。
[〜#〜] sameorigin [〜#〜]は、リクエストがからのものである場合にのみ、フレームにリソースをロードする権限を与えますプライマリサイト。
[〜#〜] deny [〜#〜]は、リソースに関係なく、あらゆる種類のフレームまたはiframe内のリソースをロードする権限をブロックします。 Originをリクエストします。
X-Frame-Options HTTPヘッダーは、ミドルウェアまたはビューデコレーターによって設定されます(応答にまだ存在しない場合)。
サイトのすべての応答に同じX-Frame-Options値を設定するには、Django.middleware.clickjacking.XFrameOptionsMiddleware
をMIDDLEWARE
に入れます。
MIDDLEWARE = [
...
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
...
]
上に表示されたmiddleware
は、すべてのSAMEORIGIN
のX-Frame-Optionsヘッダー値をHttpResponse
に設定します。代わりにDENY
を使用する必要がある場合は、いつでもこの設定を必要な値に設定できます。
X_FRAME_OPTIONS = 'DENY'
X-Frame-Optionsヘッダー値を設定したくないビューが必要な場合があります。このような場合、Djangoは、ミドルウェアにヘッダーを設定しないように指示するビューデコレーターを提供します。
from Django.http import HttpResponse
from Django.views.decorators.clickjacking import xframe_options_exempt
@xframe_options_exempt
def let_load_in_an_iframe(request):
return HttpResponse("This page is safe to load in an iframe on any site.")
@xframe_options_deny
と@xframe_options_sameorigin
は、X = Frame-Optionsヘッダーをセレクティブビューベースで設定するために@xframe_options_exempt
以外にDjangoが提供する他のデコレーターです。