asp.net - 具有多个域的访问控制允许来源

标签 asp.net iis cors web-config

在我的 web.config 中,我想为 access-control-allow-origin 指令指定多个域。我不想使用 *。我试过这种语法:

<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />

这个

<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />

这个

<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />

还有这个

<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />

但它们都不起作用。 什么是正确的语法?

最佳答案

对于 IIS 7.5+ 和 Rewrite 2.0,您可以使用:

<system.webServer>
   <httpProtocol>
     <customHeaders>
         <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
         <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,PUT,DELETE" />
     </customHeaders>
   </httpProtocol>
        <rewrite>            
            <outboundRules>
                <clear />                
                <rule name="AddCrossDomainHeader">
                    <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                        <add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?domain1\.com|(.+\.)?domain2\.com|(.+\.)?domain3\.com))" />
                    </conditions>
                    <action type="Rewrite" value="{C:0}" />
                </rule>           
            </outboundRules>
        </rewrite>
 </system.webServer>

解释服务器变量RESPONSE_Access_Control_Allow_Origin部分:
在 Rewrite 中,您可以在 RESPONSE_ 之后使用任何字符串,它将使用单词的其余部分作为标题名称(在本例中为 Access-Control-Allow-Origin)来创建响应标题。重写使用下划线“_”而不是破折号“-”(重写将它们转换为破折号)

解释服务器变量HTTP_ORIGIN :
同样,在 Rewrite 中,您可以使用 HTTP_ 作为前缀来获取任何请求 header 。破折号的规则相同(使用下划线“_”而不是破折号“-”)。

关于asp.net - 具有多个域的访问控制允许来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17323350/

相关文章:

apache - JasperServer 被 CORS 策略阻止 : No 'Access-Control-Allow-Origin'

c# - 如何将类转换为 Dictionary<string,string>?

c# - 如何在渲染时获取 C# ASP.NET ListView 中当前记录的索引

c# - 单例运行在 Asp.Net web 应用程序上

linux - 更改 X-Frame-Options 以允许所有域

javascript - CORS 预检调用不跟在 GET 调用之后

asp.net - 再现错误消息-浏览器/机器速度慢

asp.net - nhibernate 配置和构建sessionfactory 时间

c# - 在 AppDomain 已加载到 ASP.NET 中时替换 DLL

在负载平衡服务器上加载时,ASP.NET 站点有时会卡住和/或在页面顶部显示奇怪的文本