我制作了一个iframe
的网页。在iframe
内,我想显示多个不同的链接,例如来自Facebook,新闻,YouTube视频或任何其他可能的网址的文章。但是,由于Xframe标头,我无法这样做。我提到了以下链接:
https://docs.djangoproject.com/en/1.8/ref/clickjacking/
和
Django XFrameOptionsMiddleware (X-Frame-Options) - allow iframe by client IP
但没有得到任何帮助。
我的settings.py文件MIDDLEWARE_CLASSES
是:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
从http://django-secure.readthedocs.org/en/latest/middleware.html,我发现使用装饰器@frame_deny_exempt
可以解决我的问题。不过,我在chrome控制台中遇到同样的错误,即
Refused to display '<URL>' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN, SAMEORIGIN'.
对此有何帮助?
答案 0 :(得分:4)
我有几个Django网站,有人想在iframe中显示它们。这是不可能的,因为&#34; x-frame-options&#34;标头值始终是SAMEORIGIN。我无法删除&#34; x-frame-options&#34;标题值无论我做了什么。
所以最后我决定做最后的解决方案,即修改httpd.conf。我添加了这一行:
Header always set X-Frame-Options ALLOWALL
它显示在iframe中。
答案 1 :(得分:4)
从settings.py中的django.middleware.clickjacking.XFrameOptionsMiddleware
列表中删除MIDDLEWARE
答案 2 :(得分:1)
如果我理解的话你在这里弄错了。 X-Frame-Options
是关于浏览器是否尊重您的标题,是否允许在iframe中使用您的网站,而不是在iframe中允许第三个网站。
分别来自其他网站的标题。因此,例如,facebook已将上述标题设置为DENY
,因此,无论您的网站标题是什么,任何遵守此标题的浏览器都不允许您的网站展示它。