Access-Control-Allow-Origin标头与跨域策略

时间:2015-05-07 15:24:56

标签: asp.net iis cross-domain cors

所以我正在阅读这些并且有点困惑。我正在另一个域使用网站的iframe。我得到No'Access-Control-Allow-Origin'标头出现在请求的资源上。“阅读这个我可以在web.config中设置标题。但是,我想要多个特定域而不仅仅是通配符“*”。我正在阅读跨域政策。创建一个xml文件这是以任何方式相关的,还是这两个完全不同的东西?

此xml政策

<?xml version="1.0"?>
  <cross-domain-policy>
  <allow-access-from domain="domain1.com"/>
  <allow-access-from domain="domain2.com"/>
</cross-domain-policy>

在web.config中对此

<system.webServer>
  <httpProtocol>    
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="site1.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

1 个答案:

答案 0 :(得分:0)

CORS的工作原理是在服务器到客户端的响应中添加一个特殊的标头。如果响应包含Access-Control-Allow-Origin标头,并且浏览器支持CORS,那么您可以直接使用Ajax加载资源,而不需要代理。

  

当您将Access-Control-Allow-Origin值设置为“site1.com”时。

使用此配置,只允许源自http://site1.com的脚本加载资源。尝试使用Ajax加载资源的任何其他域都将获得标准的安全错误消息。通过这种方式,站点所有者可以限制允许哪些域使用CORS加载其资源。

或者,网站所有者可以使用随时可用的星号来授予开放式访问权限:

  

Access-Control-Allow-Origin:*

现在,任何想要使用Ajax直接加载资源的站点都可以这样做而不会出现浏览器安全性错误。对于经常使用JavaScript加载数据的现代应用程序来说,它是一种非常有用的技术,希望更现代的Web API将开始支持CORS。