Visual studio 2015 为什么我会得到重复的访问控制允许原始请求头?
我有一个wcf web服务应用程序在VS 2015中从IIS Express运行,需要允许跨源请求。最初,我收到一条来自我的客户端应用程序的消息:“对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。因此不允许源站“”访问。”。我用以下代码添加了一个Global.asaxVisual studio 2015 为什么我会得到重复的访问控制允许原始请求头?,visual-studio-2015,cors,global-asax,Visual Studio 2015,Cors,Global Asax,我有一个wcf web服务应用程序在VS 2015中从IIS Express运行,需要允许跨源请求。最初,我收到一条来自我的客户端应用程序的消息:“对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。因此不允许源站“”访问。”。我用以下代码添加了一个Global.asax protected void Application_BeginRequest(object sender, EventArgs e) { // Ensure the we
protected void Application_BeginRequest(object sender, EventArgs e)
{
// Ensure the web service allows cross site scripting from certain origins
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:1234");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, OPTIONS");
//HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
现在,当我尝试从客户端调用服务时,我得到“访问控制允许源站”标题包含多个值“*”,但只允许一个值。因此不允许源站“”访问。”
因此,没有标题是不够的,但一个标题正在变成两个。为什么会发生这种情况
注意:我在web.config中没有添加任何标题的内容
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
只是添加一条注释,因为这不是真正的答案,但我也遇到了同样的问题,在解决方案中搜索“COR”并进行调试使我能够删除它们。服务器到服务器的请求很好,但是来自另一个域的ajax调用具有这些重复的头。我在解决方案中使用ctrl+shift+f搜索CORS,发现Thinktecture的Identity Server 2中已经设置了CORS配置,但在WebApiConfig中的Register方法中再次设置了CORS配置。注释掉第二个删除了重复项。同样,作为重复CORS包装检查的包装也可能导致这种情况。