经过多个小时的阅读后,我发现IIS不支持多个
"Access-Control-Allow-Origin"
标题。
不允许使用"*"
设置值,错误:
'Access-Control-Allow-Origin'中不能使用通配符'*' 凭证标志为true时的标头。因此,原点'null' 不允许访问。
其他SO问题提出了this一个或this一个解决方案,但我不知道在哪里需要更改标题。
我的应用程序是用.NET编写的,我使用的是IIS 8.5。我的目标是为多个源域执行CORS请求。我是否必须编写IHttpModule来处理原始标题?
答案 0 :(得分:1)
我想出了我自己的解决方案,它也像Google+或Facebook auth一样工作。这是另一个基于iFrame auth
的SO问题您可以将iFrame用作中间件。在iFrame中,我在相同的源/域上向我的应用程序发出请求。
例如:
我的应用程序来自www.domainA.com,另一个来自www.domainB.com,它们都包含来自www.hostingdomain.com的iFrame。
来自www.hostingdomain.com我会调用我的webservice并根据.NET FormsAuthentication设置一个cookie。对于IE,您必须使用P3P设置3rd party cookie。
答案 1 :(得分:0)
您可以使用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