美文网首页
在 Web.config 中,配置允许多个指定的域名进行跨域访问

在 Web.config 中,配置允许多个指定的域名进行跨域访问

作者: 缺水的海豚 | 来源:发表于2017-01-31 10:20 被阅读0次

    一般来说,如果是要允许跨域访问,最简单的设置,就是在 Web.config 中,将 Access-Control-Allow-Origin 设置为 * 即可,如下所示:

    <system.webServer>
        <!-- 其它配置 -->
    
        <httpProtocol>
            <customHeaders>
                <!-- 跨域配置 -->
                <add name="Access-Control-Allow-Origin" value="*" />
            </customHeaders>
        </httpProtocol>
    
    </system.webServer>
    

    但是对于强迫症来说,这样大而全的设置,感觉上不利于网站的安全。那么,如果要具体的指定允许跨域访问的域名,怎么处理呢?

    第一种情况:指定具体的单个域名。

    这种情况很好处理,在上面的配置中,将 Access-Control-Allow-Origin 的 value 设置为该域名(http://bbb.aaa.com)即可,注意:不能使用泛域名

    第二种情况:指定多个域名。

    这种情况,就不能在上述的 value 中写入多个域名了,哪怕用逗号分隔,也完全没有用。

    这时,可以使用 URL Rewrite 组件达到这个效果。

    URL Rewrite 的安装方式:

    该组件安装好后(重启服务器),在 Web.config 中定位到 <system.webServer>,不用再添加 <httpProtocol> 中的跨域配置了,取而代之的是添加 <rewrite> 的配置,如下所示:

    <system.webServer>
        <!-- 其它配置 -->
    
        <rewrite>
            <outboundRules>
                <rule name="AddCrossDomain">
                    <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>
    

    至此,允许多个指定域名的跨域访问就配置完了。

    相关文章

      网友评论

          本文标题:在 Web.config 中,配置允许多个指定的域名进行跨域访问

          本文链接:https://www.haomeiwen.com/subject/hgzhittx.html