Asp.net 如何绕过X-Frame-Options:SAMEORIGIN HTTP头?

Asp.net 如何绕过X-Frame-Options:SAMEORIGIN HTTP头?,asp.net,sharepoint,http,x-frame-options,Asp.net,Sharepoint,Http,X Frame Options,我正在开发一个网页,需要在iframe中显示另一家公司的SharePoint服务器提供的报告。他们对此很满意 我们试图在iframe中呈现的页面为我们提供了X-Frame-Options:SAMEORIGIN,这会导致浏览器(至少IE8)拒绝呈现框架中的内容 首先,这是他们可以控制的,还是SharePoint只是默认情况下做的?如果我让他们关掉这个,他们能做到吗 第二,我能告诉浏览器忽略此http头并只渲染帧吗?如果第二家公司希望您在IFrame中访问其内容,那么他们需要取消限制-他们可以在II

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

我们试图在iframe中呈现的页面为我们提供了X-Frame-Options:SAMEORIGIN,这会导致浏览器(至少IE8)拒绝呈现框架中的内容

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


第二,我能告诉浏览器忽略此http头并只渲染帧吗?

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

你无法绕过它,任何有效的东西都应该在安全修补程序中快速修补。如果源内容标题显示“不允许在帧中使用”,则不能告诉浏览器仅渲染帧。这将使会话劫持变得更容易


如果内容是“仅获取”而不回发数据,则可以获取页面服务器端并代理不带标题的内容,但任何回发都应无效。

X-Frame-Options标题是在浏览器级别强制执行的安全功能

如果您可以控制您的用户群(公司应用程序的IT部门),您可以尝试使用greasemonkey脚本(如果您可以a)在所有人中部署greasemonkey,b)以共享方式部署脚本)


或者,您可以代理他们的结果。在服务器上创建一个端点,并让该端点打开到目标端点的连接,然后简单地向后传输流量。

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

更新:2019-12-30

看来这个工具已经不起作用了<代码>[请求更新!]

更新2019-01-06:您可以使用my Web组件在
中绕过
X-Frame-Options
。它通过使用多个CORS代理扩展了IFrame元素,并在最新的Firefox和Chrome中进行了测试

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

  • (可选)包括用于Safari的:

    <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>
    
    
    

  • 是的,小提琴手是我的选择:

  • 打开Fiddler菜单>规则>自定义规则(这将有效地编辑
    CustomRules.js
  • 在响应之前查找函数
    onbefore
  • 添加以下行:

    oSession.oResponse.headers.Remove("X-Frame-Options");
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
    
  • 记住保存脚本
    这种方法现在看来被阻止了。@niutech-它工作得非常好。谢谢你的解决方案。@niutech奇怪的是:有时候它是有效的。有时它会失败。还不知道为什么。如果我发现了,我会在这里发布。@Jeroenwiertplumers尝试我的新自定义元素!这根本没有绕过
    X-Frame-Options
    Options,它只是使用代理刮取目标页面并返回没有标题的内容。它只适用于
    GET
    请求,不会获取cookie,只能刮取第三方代理(其中一个
    cors.io
    jsonp.afeld.me
    cors anywhere.herokuapp.com
    )可以访问的页面(并可能在其中一个网站上留下内容副本)。由于OP询问有关Sharepoint的信息,此连接可能是通过VPN连接的,并且肯定需要cookie,这两种连接都不能与未记录的第三方代理一起使用。不允许在iframe中显示,但是,有没有办法仍然将html作为原始字符串获取?您应该能够刮取它,并对标记执行任何您想要的操作。@图例这就是我所说的代理内容:-)我可能会重新措辞;-)