在 iis 上启用 cors - x-frame-options 拒绝加载:不允许跨源框架

enable cors on iis - load denied by x-frame-options: does not permit cross-origin framing

关于这个有几个问题,但我还没有得到正确的答案。我给一个简短的总结:

A 公司有一个带有 iframe 的网站。公司 B 为该 iframe 提供 URL。用户使用公司 B 的应用程序,并使用用户选择的设置设置一个 URL,它从公司 A 传送到 iframe。

但是,由于 x-frame-options,框架还没有工作。错误信息如下:

Load denied by X-Frame-Options: http://www.myurl.com:8088/myPath?panel=panel&user=username does not permit cross-origin framing.

我加了

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
    </customHeaders>
</httpProtocol>

到我的 web.config 并尝试添加

<handlers>  
    <remove name="OPTIONS"/>
</handlers>

没有任何成功。

我从 this and this 网站获得了在我的 IIS 上添加 CORS 支持的建议。正如我上面提到的,没有任何成功。我不太擅长 Web 开发或 IIS,所以也许这个问题对您来说听起来很愚蠢:公司 A 必须启用 CORS 还是公司 B?或两者?如何?我从 google 那里得到的建议还没有帮助。

感谢建议。

该错误消息与 Access-Control-Allow-Origin header 或 OPTIONS 处理无关,因此预计问题中描述的更改不会产生任何影响。

原因是,http://www.myurl.com:8088 服务器发送 X-Frame-Options 响应 header 以响应对 /myPath 的请求。因此,如果您不希望服务器这样做,则需要找出服务器代码的哪一部分导致添加 X-Frame-Options 响应 header,然后删除该代码。

x-frame-options 已被 Content-Security-Policy 取代,您可以按如下方式使用它:

<system.webServer>
<httpProtocol>
  <customHeaders>
    <add name="Content-Security-Policy" value="frame-ancestors 'self' example.com *.example.net ;" />
    <add name="X-Content-Security-Policy" value="frame-ancestors 'self' example.com *.example.net ;" />
  </customHeaders>
</httpProtocol>