2015-10-21 7 views
12

Ich versuche, django zu ermöglichen, dass eine bestimmte Ansicht in externe Sites eingebettet werden kann, vorzugsweise ohne Einschränkungen für Websites.Wie konfiguriere ich X-Frame-Optionen in Django, um das Iframe-Einbetten einer Ansicht zu ermöglichen?

In meinem views.py Datei, habe ich den folgenden Code hinzugefügt, wobei die Ansicht futurebig diejenige, die ich eingebettet werden aktivieren möchten ist:

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) 

, die nicht so hilft Ich verstehe, weil es nur das Einbetten auf demselben Server ermöglicht.

Wie kann ich die Header für diese bestimmte Ansicht festlegen, damit sie in jede Website eingebettet werden kann?

Für das Protokoll, ich bin nur ein Frontend Entwickler, die Back-End-Entwickler, der die Website entwickelt wird nicht mehr mit mir zu arbeiten und sich weigerte, seinen Code zu dokumentieren, so, wenn mir jemand helfen könnte, und erklären, sorgfältig, wo und welche Änderungen Ich sollte es tun, ich werde es sehr apreciatte.

Danke.

Soweit ich weiß, ist die Django Version 1.6

Antwort

24

Sie sind in die richtige Richtung, aber genau Dekorateur, die Sie diese ‚xframe_options_exempt‘ erreichen müssen.

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 wird nicht mehr unterstützt. Es ist an der Zeit, ein Upgrade zu bekommen.

+6

Ich denke, wir brauchen Dekorateur für ALLOW-FROM von iframe Optionen https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/X-Frame-Options um akzeptable Domains zu definieren, bitte nicht einfach X-Frame Header, bitte, jemand , Ticket erstellen (ich habe keinen Zugriff) – Vermus

2

Anscheinend können Sie eine Regel in den Einstellungen legen Sie die folgende zu sagen:

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

Auch heute sollten Sie erwägen, um CSP bewegen

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

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

Verwandte Themen