我正在开发一个网页,需要在 iframe 中显示由另一家公司的 SharePoint 服务器提供的报表。他们对此很满意。

我们尝试在 iframe 中渲染的页面为我们提供了 X-Frame-Options:SAMEORIGIN 导致浏览器(至少 IE8)拒绝渲染框架中的内容。

首先,这是他们可以控制的事情还是 SharePoint 默认情况下所做的事情?如果我要求他们关掉这个功能,他们能做到吗?

其次,我可以做些什么来告诉浏览器忽略这个 http 标头并只渲染框架吗?

有帮助吗?

解决方案

如果第二家公司很高兴您在 IFrame 中访问他们的内容,那么他​​们需要取消限制 - 他们可以在 IIS 配置中相当轻松地做到这一点。

您无法采取任何措施来规避它,并且任何有效的措施都应该在安全修补程序中快速修复。如果源内容标头表示框架中不允许,则您无法告诉浏览器仅渲染框架。这将使会话劫持变得更容易。

如果内容只是 GET,您不回发数据,那么您可以获取页面服务器端并代理没有标头的内容,但任何回发都应该无效。

其他提示

更新2019:能够 旁路 X-Frame-Options<iframe> 使用我的 X框架bypass Web组件。它通过使用多个CORS代理来扩展IFRAME元素,并在最新的Firefox和Chrome中进行了测试。

您可以按以下方式使用它:

  1. (可选)包括 带有内置的自定义元素扩展了polyfill 对于野生动物园:

    <script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
    
  2. 包括X-Frame-Bypass JS模块:

    <script type="module" src="x-frame-bypass.js"></script>
    
  3. 插入X-Frame-bypass自定义元素:

    <iframe is="x-frame-bypass" src="https://example.org/"></iframe>
    

X框架选项标头是在浏览器级别强制执行的安全功能。

如果您控制了用户群(Corp App的部门),则可以尝试类似GreaseMonKey脚本(如果可以的话),则可以在所有人中部署GreaseMonKey,b)以共享的方式部署您的脚本)...

另外,您可以代理他们的结果。在服务器上创建一个端点,并使该端点打开与目标端点的连接,然后简单地向后汇入流量。

至于第二个问题 - 您可以使用 提琴手 过滤器设置响应 X-Frame-Options 手动到类似的东西 ALLOW-FROM *. 。但是,当然,此技巧仅适用于您 - 其他用户仍然无法看到Iframe内容(如果他们不这样做)。

是的,提琴手对我来说是一个选择:

  1. 打开 提琴手菜单>规则>自定义规则 (这有效编辑 CustomRules.js).
  2. 找到功能 OnBeforeResponse
  3. 添加以下行:

    oSession.oResponse.headers.Remove("X-Frame-Options");
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
    
  4. 记住保存脚本!
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top