C# 向从$http到asp.net webapi的飞行前请求发送正确的标头值时出错

C# 向从$http到asp.net webapi的飞行前请求发送正确的标头值时出错,c#,angularjs,asp.net-web-api,xmlhttprequest,cors,C#,Angularjs,Asp.net Web Api,Xmlhttprequest,Cors,我正在尝试使用angular的$http将身份验证数据发送到后端web api。当我添加下面的行时,浏览器开始发送飞行前请求 $http.defaults.headers.common.Authorization = 'Basic xxxxyyyyyy' ; 在WebAPI方面,当我使用OPTIONS方法得到一个请求时,我将按如下方式处理它 if (request.Method == HttpMethod.Options && request.Headers.Any(k =&g

我正在尝试使用angular的$http将身份验证数据发送到后端web api。当我添加下面的行时,浏览器开始发送飞行前请求

$http.defaults.headers.common.Authorization = 'Basic xxxxyyyyyy' ;
在WebAPI方面,当我使用OPTIONS方法得到一个请求时,我将按如下方式处理它

if (request.Method == HttpMethod.Options && request.Headers.Any(k => k.Key.Contains("Origin")))
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK);
                response.Headers.Add("Access-Control-Allow-Headers", "Content-Type,X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5,  Date, X-Api-Version, X-File-Name");
                response.Headers.Add("Access-Control-Allow-Origin", request.Headers.GetValues("Origin"));
                response.Headers.Add("Access-Control-Allow-Credentials", "true");
                response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
                var tsc = new TaskCompletionSource<HttpResponseMessage>();
                tsc.SetResult(response);
                return tsc.Task;  
            }
if(request.Method==HttpMethod.Options&&request.Headers.Any(k=>k.Key.Contains(“Origin”))
{
var响应=新的HttpResponseMessage(HttpStatusCode.OK);
添加(“访问控制允许标头”,“内容类型,X-CSRF-Token,X-Requested-With,Accept,Accept Version,内容长度,内容-MD5,日期,X-Api-Version,X-File-Name”);
Add(“访问控制允许源”,request.Headers.GetValues(“源”);
Add(“访问控制允许凭据”、“true”);
添加(“访问控制允许方法”、“POST、GET、PUT、DELETE、OPTIONS”);
var tsc=new TaskCompletionSource();
tsc.设置结果(响应);
返回tsc任务;
}
但飞行前请求未通过访问控制检查

XMLHttpRequest无法加载。。。。。。。。。。。。。 对飞行前请求的响应未通过访问控制检查: “访问控制允许来源”标题包含多个值 “,*”,但只允许一个。起源 因此不允许访问“”

我做错了什么?

本文给出了“访问控制允许源标题包含多个值”错误解决方案。请试一试

希望这有帮助

“Access Control Allow Origin标头包含多个值”错误解决方案如下所示。请试一试


希望这有帮助

我也遇到了同样的问题,这是由web配置设置引起的:

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Cache-Control" />
        <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,OPTIONS" />
      </customHeaders>
 </httpProtocol>


删除Access Control Allow Origin自定义头将解决此问题

我也遇到过同样的问题,这是由web配置设置引起的:

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Cache-Control" />
        <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,OPTIONS" />
      </customHeaders>
 </httpProtocol>

删除Access Control Allow Origin自定义标头将解决此问题