如何删除 Django 中的 X 框架选项 header?

How to remove the Xframe Options header in django?

我制作了一个包含 iframe 的页面。在 iframe 中,我想显示多个不同的 link,例如来自 facebook 的文章、新闻、youtube 视频或任何其他可能的 URL。但是,由于 Xframe header,我无法这样做。我参考了以下 link: 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'.

有什么帮助吗??

如果我理解得很好,你这里有问题。 X-Frame-Options 是关于浏览器尊重您的 header 是否允许在 iframe 中允许 您的 网站,而不是在您的 iframe 中允许第三个网站。

另外,这发生在其他网站的 header 上。因此,例如 facebook 已将上述 header 设置为 DENY,因此无论您网站的 header 是什么,任何遵守此规定的浏览器都不允许您的网站显示它。

我有几个 Django 站点,有人想在 iframe 中显示它们。这是不可能的,因为 "x-frame-options" header 值始终是 SAMEORIGIN。无论我做什么,我都无法删除 "x-frame-options" header 值。

所以最后我决定做最后的解决方案,就是修改httpd.conf。我添加了这一行:

  Header always set X-Frame-Options ALLOWALL

并且显示在 iframe 中。

从 settings.py

中的 MIDDLEWARE 列表中删除 django.middleware.clickjacking.XFrameOptionsMiddleware