Asp.net 如何绕过X-Frame-Options:SAMEORIGIN HTTP头?
我正在开发一个网页,需要在iframe中显示另一家公司的SharePoint服务器提供的报告。他们对此很满意 我们试图在iframe中呈现的页面为我们提供了X-Frame-Options:SAMEORIGIN,这会导致浏览器(至少IE8)拒绝呈现框架中的内容 首先,这是他们可以控制的,还是SharePoint只是默认情况下做的?如果我让他们关掉这个,他们能做到吗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
第二,我能告诉浏览器忽略此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中进行了测试
您可以按如下方式使用它:
<script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
<script type="module" src="x-frame-bypass.js"></script>
<iframe is="x-frame-bypass" src="https://example.org/"></iframe>
是的,小提琴手是我的选择:
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作为原始字符串获取?您应该能够刮取它,并对标记执行任何您想要的操作。@图例这就是我所说的代理内容:-)我可能会重新措辞;-)