我正在开发一个网页,该网页需要在 iframe 中显示由另一家公司的 SharePoint 服务器提供的报告。他们对此很好。
我们试图在 iframe 中呈现的页面给了我们 X-Frame-Options: SAMEORIGIN 导致浏览器(至少 IE8)拒绝在框架中呈现内容。
首先,这是他们可以控制的事情,还是 SharePoint 在默认情况下所做的事情?如果我要求他们关闭此功能,他们甚至可以这样做吗?
其次,我可以做些什么来告诉浏览器忽略这个 http 标头并只渲染框架吗?
我正在开发一个网页,该网页需要在 iframe 中显示由另一家公司的 SharePoint 服务器提供的报告。他们对此很好。
我们试图在 iframe 中呈现的页面给了我们 X-Frame-Options: SAMEORIGIN 导致浏览器(至少 IE8)拒绝在框架中呈现内容。
首先,这是他们可以控制的事情,还是 SharePoint 在默认情况下所做的事情?如果我要求他们关闭此功能,他们甚至可以这样做吗?
其次,我可以做些什么来告诉浏览器忽略这个 http 标头并只渲染框架吗?
更新:2019-12-30
看来这个工具已经不行了!
[Request for update!]
更新 2019-01-06:您可以使用我的X-Frame-Options
X -Frame-Bypass Web组件绕过。它通过使用多个 CORS 代理来扩展 IFrame 元素,并在最新的 Firefox 和 Chrome 中进行了测试。<iframe>
您可以按如下方式使用它:
(可选)包含用于 Safari的具有内置扩展 polyfill 的自定义元素:
<script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
包括 X-Frame-Bypass JS 模块:
<script type="module" src="x-frame-bypass.js"></script>
插入 X-Frame-Bypass 自定义元素:
<iframe is="x-frame-bypass" src="https://example.org/"></iframe>
如果第二家公司对您在 IFrame 中访问他们的内容感到高兴,那么他们需要取消限制 - 他们可以在 IIS 配置中相当容易地做到这一点。
您无法采取任何措施来规避它,任何有效的东西都应该在安全修补程序中快速修补。如果源内容标头中不允许出现在帧中,则不能告诉浏览器只渲染帧。这将使会话劫持更容易。
如果内容是 GET 只是您不回发数据,那么您可以获取页面服务器端并代理没有标头的内容,但是任何回发都应该失效。
X-Frame-Options 标头是在浏览器级别强制执行的安全功能。
如果您可以控制您的用户群(公司应用程序的 IT 部门),您可以尝试使用类似油脂的脚本(如果可以的话)在每个人中部署油脂猴子,并且 b)以共享方式部署您的脚本)...
或者,您可以代理他们的结果。在您的服务器上创建一个端点,并让该端点打开与目标端点的连接,并简单地将流量向后汇集。
是的 Fiddler 对我来说是一个选择:
CustomRules.js
)。OnBeforeResponse
添加以下行:
oSession.oResponse.headers.Remove("X-Frame-Options");
oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
至于第二个问题 - 您可以使用FiddlerX-Frame-Options
过滤器手动将响应标头设置为ALLOW-FROM *
. 但是,当然,这个技巧只对你有用 - 其他用户仍然无法看到 iframe 内容(如果他们不这样做)。