即使在视图设置为@xframe\u options\u export之后,xframe options仍拒绝Django iframe加载
我有一个django应用程序,我想在任何站点上嵌入一个即使在视图设置为@xframe\u options\u export之后,xframe options仍拒绝Django iframe加载,django,x-frame-options,django-middleware,clickjacking,Django,X Frame Options,Django Middleware,Clickjacking,我有一个django应用程序,我想在任何站点上嵌入一个embed视图作为iframe。我认为我已经正确地配置了它,因为我正在将视图设置为@xframe\u options\u export,但是我仍然在Chrome和Firefox中得到了一个x-frame选项错误 Chrome:拒绝显示'https://foo.com/embed/...'在帧中,因为它将'X-frame-Options'设置为'deny'。 Firefox:X-Frame-Options拒绝加载:'https://foo.co
embed
视图作为iframe。我认为我已经正确地配置了它,因为我正在将视图设置为@xframe\u options\u export
,但是我仍然在Chrome和Firefox中得到了一个x-frame选项错误
Chrome:拒绝显示'https://foo.com/embed/...'在帧中,因为它将'X-frame-Options'设置为'deny'。
Firefox:X-Frame-Options拒绝加载:'https://foo.com/embed/...'不允许帧
views.py
from django.shortcuts import render, get_object_or_404, redirect
from django.views.decorators.clickjacking import xframe_options_exempt
@xframe_options_exempt
def embed(request, bar_slug, slug):
embed_object = get_object_or_404(foo, slug=slug)
if embed_object.bar.slug != bar_slug:
raise Http404
embed_url = '{}{}'.format('https://foo.com/embed', embed_object.get_absolute_url())
context = {
'embed_object': embed_object,
'embed_url': embed_url,
'embed_url_encode': urlquote_plus(embed_url),
}
return render(request, 'causes/embed.html', context)
设置.py
MIDDLEWARE_CLASSES = [
'djangosecure.middleware.SecurityMiddleware',
'project.utils.middleware.SiteMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'project.utils.middleware.HoneypotMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
我假设
djangosecure.middleware.SecurityMiddleware
正在@xframe\u Options\u except
上强制执行“X-Frame-Options”。我更愿意使用特定于视图的解决方案来解决这个问题,而不是设置X\u FRAME\u OPTIONS='ALLOW'
。谢谢我在嵌入
视图中使用了两个decorator使其正常工作:
from djangosecure.decorators import frame_deny_exempt
from django.views.decorators.clickjacking import xframe_options_exempt
@xframe_options_exempt
@frame_deny_exempt
def embed(...)
我错过了django安全装饰师