为什么我会获得重复的Access-Control-Allow-Origin请求标头?

时间:2017-02-09 18:40:25

标签: visual-studio-2015 cors global-asax

我有一个从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>

0 个答案:

没有答案