如何使用 X-Frame-Options SAMEORIGIN 对来自同一域的页面进行 iframe?

Posted

技术标签:

【中文标题】如何使用 X-Frame-Options SAMEORIGIN 对来自同一域的页面进行 iframe?【英文标题】:How to iframe a page from same domain with X-Frame-Options SAMEORIGIN? 【发布时间】:2015-04-25 09:10:12 【问题描述】:

我们有这个页面,www.ourdomain.com/home.html

在 home.html 中,有一个 iframe,其 src 设置为 yyy.ourdomain.com/index.html。 yyy.ourdomain.com 上的所有页面都将 X-Frame-Options 设置为 SAMEORIGIN。由于这个标头,iframe 内容不会加载。我收到此错误。

Firefox - X-Frame-Options 拒绝加载:http://yyy.ourdomain.com/index.html 不允许跨域框架。

Chrome - 拒绝在框架中显示“http://yyy.ourdomain.com/index.html”,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。

home.html 和 index.html 都有这行 javascript 代码 -

document.domain = 'ourdomain.com';

我怎样才能做到这一点?

PS - 我没有删除 X-Frame-Options 标头的选项。

谢谢。

【问题讨论】:

你可能不能使用框架。也许 ajax 会做你需要的。 例如,通过ajax拉入整个页面,然后用javascript将内容加载到modal或其他东西中。 如果您正在开发自己使用的东西,并且愿意使用浏览器插件,您可以使用 Ignore X-Frame headers plugin for Chrome (chrome.google.com/webstore/detail/ignore-x-frame-headers/…)。如果您尝试解决通用或生产代码的问题,这显然无济于事。 它是普通大众。除了从响应中删除标头之外,没有其他方法可以使其工作吗? 【参考方案1】:

标题X-Frame-Options: DENYX-Frame-Options: SAMEORIGIN 不允许您以任何方式呈现<frame><iframe><object> 中的页面。

我发现的唯一工作方式是在主域中创建一个代理页面,以加载所请求的子域页面的 html 内容。

https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

更多信息

【讨论】:

以上是关于如何使用 X-Frame-Options SAMEORIGIN 对来自同一域的页面进行 iframe?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 项目中设置 X-Frame-Options?

如何使用 X-Frame-Options SAMEORIGIN 对来自同一域的页面进行 iframe?

如何在 Rails 4 中覆盖控制器或动作的 X-Frame-Options

如何在 express.js node.js 中设置 X-Frame-Options

如何在 nginx 中正确设置 X-Frame-Options Allow-From

如何在 Django 中配置 X-Frame-Options 以允许 iframe 嵌入一个视图?