我有一个从VS 2015中的IIS Express运行的wcf Web服务应用程序,需要允许跨源请求。最初我得到了一个"对预检请求的响应没有通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:1234'因此不允许访问。"来自我客户端应用的消息。我添加了一个带有以下代码的Global.asax
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();
}
}
现在,当我尝试从我的客户端拨打该服务时,我得到了"访问控制 - 允许 - 来源'标头包含多个值' http://localhost:1234,*',但只允许一个。起源' http://localhost:1234'因此不允许访问。"
所以没有标题是不够的,但是一个标题变成了两个。为什么会这样?
注意:我没有在web.config中有任何可以添加任何标题的内容
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>