2015-10-21 37 views
12

Próbuję włączyć django, aby umożliwić umieszczenie jednego określonego widoku w witrynach zewnętrznych, najlepiej bez ograniczeń witryn.Jak skonfigurować X-Frame-Options w Django, aby umożliwić osadzanie iframe w jednym widoku?

W moim pliku views.py, dodałem poniższy kod, gdzie widok futurebig jest jeden Chcę włączyć do osadzenia:

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) 

który nie pomaga, jak Rozumiem, ponieważ umożliwia on tylko umieszczanie na tym samym serwerze.

Jak ustawić nagłówki dla tego konkretnego widoku, aby umożliwić jego osadzenie w dowolnej witrynie?

Dla przypomnienia, jestem tylko programistą frontendowym, programista backendu, który opracował stronę, nie pracuje już ze mną i odmówił udokumentowania swojego kodu, więc jeśli ktoś mógłby mi pomóc i wyjaśnić dokładnie, gdzie i jakie modyfikacje Powinienem zrobić, ja to bardzo apreciatte.

Dzięki.

O ile mi wiadomo, wersja Django 1.6

Odpowiedz

24

Idziesz w dobrym kierunku, ale dokładny dekorator, który trzeba będzie osiągnąć to „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 nie jest już obsługiwany. To dobry czas na ulepszenie.

+6

myślę, musimy dekorator dla opcji POZWÓL-Z opcji iframe https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/X-Frame-Opcje do definiowania dopuszczalnych domen, a nie tylko usuwania nagłówka X-Frame, proszę, ktoś , utwórz bilet (nie mam dostępu) – Vermus

2

Podobno można ustawić regułę w ustawieniach mówi następujące:

X_FRAME_OPTIONS = 'ALLOW-FROM https://example.com/' 

Również w dzisiejszych czasach należy rozważyć przeniesienie do CSP

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

Zobacz https://stackoverflow.com/a/25617678/186202