如何删除 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
我制作了一个包含 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