繁体   English   中英

如何通过在 IIS 8 中使用“Access-Control-Allow-Origin”来允许多个域

[英]How can I allow multiple domains by using "Access-Control-Allow-Origin" in IIS 8

经过几个小时的阅读,我发现 IIS 不支持多个
"Access-Control-Allow-Origin"标头。

也不允许使用"*"设置值,并出现错误:

当凭据标志为真时,不能在“Access-Control-Allow-Origin”标头中使用通配符“*”。 因此,不允许访问 Origin 'null'。

其他 SO 问题提出了像这样这样的解决方案,但我不知道我必须在哪里更改标题。

我的应用程序是用 .NET 编写的,我使用的是 IIS 8.5。 我的目标是为多个源域执行 CORS 请求。 我是否必须编写一个IHttpModule来处理原始标头?

我想出了我自己的解决方案,它也像Google+Facebook auth 一样工作。 这是另一个基于iFrame auth 的SO 问题

您可以使用 iFrame 作为中间件。 在 iFrame 中,我向同一来源/域上的应用程序发出请求。

例如:

我的应用程序来自 www.domainA.com 另一个来自 www.domainB.com 并且它们都包含来自 www.hostingdomain.com 的 iFrame。

从 www.hostingdomain.com 我确实调用了我的网络服务并设置了基于 .NET FormsAuthentication 的 cookie。 对于 IE,您必须使用P3P来设置第 3 方 cookie

您可以使用 IIS CORS 模块: https : //www.iis.net/downloads/microsoft/iis-cors-module

你的 web.config 应该是这样的,替换你的域的 [origin_#]:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <cors enabled="true" failUnlistedOrigins="true">
            <add origin="[origin_1]">
                <allowMethods>                    
                    <add method="GET" />
                    <add method="HEAD" />
                    <add method="POST" />
                    <add method="PUT" /> 
                    <add method="DELETE" /> 
                </allowMethods>
            </add>
            <add origin="[origin_2]">
                <allowMethods>
                    <add method="GET" />
                    <add method="HEAD" />
                    <add method="POST" />
                    <add method="PUT" /> 
                    <add method="DELETE" /> 
                </allowMethods>
            </add>
        </cors>
    </system.webServer>
</configuration>

您可以在此处找到配置参考: https : //docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM