如何删除django中的Xframe Options标头?

时间:2015-07-02 06:56:42

标签: python django iframe x-frame-options clickjacking

我制作了一个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'.

对此有何帮助?

3 个答案:

答案 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,因此,无论您的网站标题是什么,任何遵守此标题的浏览器都不允许您的网站展示它。