我正在开发一个简单的功能,允许我的合作伙伴(其他网站)将我们的内容嵌入到 iframe 中的他们的网站上。
我正在测试,奇怪的是有些页面是允许的,有些是不允许的。
例如:
<iframe frameborder="0" height="500" width="900" src="https://www.mywebsite.com"></iframe>
抛出控制台错误:
Load denied by X-Frame-Options: https://www.mywebsite.com/ does not permit cross-origin framing.
而这:
<iframe frameborder="0" height="500" width="900" src="https://www.mywebsite.com/experience/"></iframe>
渲染没有问题。
可能是什么问题?
我可以明确允许从外部源在 iframe 中呈现我的内容吗?怎么做?
编辑
我的 web.config 现在看起来像这样:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Cache-Control" value="public" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
但它仍然不起作用,例如。它不允许查看 iframe 内容。
我检查了网络响应并注意到两个iframe
请求中的标头设置正确:
access-control-allow-origin *
但是在第一个 iframe 请求中,我还得到了这个:
x-frame-options SAMEORIGIN
而在第二个(经验)x-frame-options
根本没有设置。
将此添加到web.config
:
<add name="X-Frame-Options" value="ALLOW-FROM *" />
两个 iframe 都返回关于不允许跨域的控制台错误,在第二种情况下
x-frame-options SAMEORIGIN
没有被删除,只是:
x-frame-options ALLOW-FROM *
被额外添加。
编辑 2
我试图删除 web.config 中的 x-frame-options 并确保它没有在 IIS 上为该站点设置,但是当我获取 url 时它仍然存在:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<remove name="X-Frame-Options" />
<add name="Cache-Control" value="public" />
<add name="Access-Control-Allow-Origin" value="*" />
<!--<add name="X-Frame-Options" value="ALLOWALL" />-->
</customHeaders>
</httpProtocol>
正如您在上面看到的那样,我一直在尝试添加x-frame-options ALLOWALL
(我当时评论了它)但它没有删除x-frame-options SAMEORIGIN