如何启用 CORS
Posted
技术标签:
【中文标题】如何启用 CORS【英文标题】:How to enable CORS 【发布时间】:2014-01-19 11:48:55 【问题描述】:我有两个站点:本地:20279/ 和本地:54220。 54220 从 20279 开始通过 IFrame 打开。用户单击按钮后,IFrame 将关闭,我在 52220 中获取数据。我阅读了,这就是我在 web.config 中所做的:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
</system.webServer>
文件js中的这段代码用来读取IFrame里面的数据
function dialog_close()
dialog(false, '');
getValueFromIFrame("if-dialog", "status");
function getValueFromIFrame(idIFrame, idField)
var iframe = document.getElementById(idIFrame);
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var value = innerDoc.getElementById(idField).value;
alert(value);
//return value;
这是我从浏览器得到的:
Blocked a frame with origin 20279 from accessing a frame with origin "http://localhost:54220". Protocols, domains, and ports must match. <br/>
Uncaught SecurityError: Blocked a frame with origin "http://localhost:20279" from accessing a frame with origin 54220. Protocols, domains, and ports must match.
我的问题是:如何让它发挥作用?
谢谢
【问题讨论】:
您的问题与CORS无关。您需要阅读网络消息 API,因为您需要利用它与不同来源的 iframe 进行通信。 @RayNicholus:它有效。谢谢你的帮助。您可以发布一个我可以标记的答案吗? 如果你有一个可行的解决方案,你应该发布代码作为答案。 【参考方案1】:您的响应中的 Access-Control-Allow-Origin 标头必须设置为在 HTTP 请求的 Origin 标头中发送的确切值,* 是不够的。
【讨论】:
1.) 通常,“*”是完全可以的。仅当跨域请求是凭据请求时,您的陈述才是正确的。 2.) 这个问题不涉及 CORS。 OP对此有误。以上是关于如何启用 CORS的主要内容,如果未能解决你的问题,请参考以下文章
Wagtail、CORS 和 Django-Cors-Headers。如何启用 CORS 以便 AXIOS 可以访问端点