13

我制作了一个页面,其中包含iframe. 在里面iframe我想显示多个不同的链接,比如来自 facebook 的文章、新闻、youtube 视频或任何其他可能的 URL。但是,由于 Xframe 标头,我无法这样做。我参考了以下链接: https://docs.djangoproject.com/en/1.8/ref/clickjacking/Django XFrameOptionsMiddleware (X-Frame-Options) - 通过客户端 IP 允许 iframe

但没有得到任何帮助。

我的 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'.

有什么帮助吗?

4

3 回答 3

7

django.middleware.clickjacking.XFrameOptionsMiddlewareMIDDLEWAREsettings.py 中的列表中删除

于 2020-05-06T10:54:22.207 回答
4

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

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

  标头始终设置 X-Frame-Options ALLOWALL

它显示在 iframe 中。

于 2015-08-14T03:04:56.603 回答
3

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

这分别发生在其他站点的标题中。因此,例如 facebook 已将上述标头设置为DENY,因此任何支持此标头的浏览器都不允许您的网站显示它,无论您的网站标头是什么。

于 2015-07-02T08:10:55.323 回答