[英]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.