如何在Django中配置X-Frame-Options以允许iframe嵌入一个视图?

22 django iframe http-headers x-frame-options

我正在尝试启用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)
Run Code Online (Sandbox Code Playgroud)

这根本无法理解,因为它只能在同一台服务器中嵌入.

如何设置特定视图的标题以使其嵌入任何网站?

为了记录,我只是一个前端开发人员,开发该网站的后端开发人员不再与我合作并拒绝记录他的代码,所以,如果有人可以帮助我并仔细解释我应该在哪里做什么修改,我会非常感激.

谢谢.

据我所知,Django版本是1.6

ian*_*kit 38

你正朝着正确的方向前进,但你需要实现的精确装饰是'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.")
Run Code Online (Sandbox Code Playgroud)

PS:不再支持DJango 1.6.现在是升级的好时机.

  • 我想,我们需要decorator for ALLrame选项的ALLOW-FROM https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/X-Frame-Options来定义可接受的域,而不仅仅是删除X-Frame Header ,拜托,有人,创造机票(我无法访问) (7认同)

Nat*_*tim 15

显然,您可以在设置中设置一条规则,说明如下:

X_FRAME_OPTIONS = 'ALLOW-FROM https://example.com/'
Run Code Online (Sandbox Code Playgroud)

现在你也应该考虑转向CSP

Content-Security-Policy: frame-ancestors 'self' example.com *.example.net ;
Run Code Online (Sandbox Code Playgroud)

请参阅/sf/answers/1793237491/

  • ALLOW-FROM 将不支持 chrome 和 safari (3认同)