Как настроить параметры X-Frame в Django, чтобы разрешить встраивание iframe одного представления?

Я пытаюсь включить Джанго, чтобы один конкретный вид должен быть внедрен на внешние сайты, preferabilly без ограничения.

в моем 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)

который не помогает, как я понимаю, потому что он позволяет только встраивать в тот же сервер.

Как я могу установить заголовки для этой конкретной целью включить его для встраивания в любой веб-сайт?

для записи, я просто разработчик frontend, бэкэнд-разработчик, который разработал сайт, больше не работает со мной и отказался документировать свой код, поэтому, если кто-нибудь может мне помочь и объяснить, где и какие изменения я должен сделать, я буду очень благодарен.

спасибо.

насколько я знаю, версия Django-1.6

2 ответов


вы идете в правильном направлении, но точный декоратор, который вам нужно будет достичь, это "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/'

и сейчас ты должен подумать о переезде в СКП

Content-Security-Policy: frame-ancestors 'self' example.com *.example.net ;

см.https://stackoverflow.com/a/25617678/186202