Json .NET Web API+;AngularJS:CORS选项请求失败,请求错误为400

Json .NET Web API+;AngularJS:CORS选项请求失败,请求错误为400,json,angularjs,asp.net-web-api,cors,Json,Angularjs,Asp.net Web Api,Cors,关于这个话题有很多问题。我试图遵循他们的答案/解决方案,但我似乎遗漏了一些东西 我的后端为.NET Web Api,其Web.config文件中包含以下内容: <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Methods" value="GET, PO

关于这个话题有很多问题。我试图遵循他们的答案/解决方案,但我似乎遗漏了一些东西

我的后端为.NET Web Api,其Web.config文件中包含以下内容:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, OPTIONS"/>
    <add name="Access-Control-Allow-Headers" value="authorization,content-type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,access-control-allow-origin"/>
  </customHeaders>
</httpProtocol>
在Fiddler中,选项请求如下所示:

$http({
   method: 'POST',
   url: options.url,
   headers: { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + basicAuth },
   data: dataObj
});
OPTIONS http://localhost:44302/my/url HTTP/1.1
Host: localhost:44302
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://127.0.0.1:9000
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36
Access-Control-Request-Headers: accept, authorization, content-type
Accept: */*
Referer: http://127.0.0.1:9000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
以下是回应:

HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Type: text/html
Server: Microsoft-IIS/8.0
WWW-Authenticate: Basic realm="MyServices"
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?blah blah
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Headers: authorization,content-type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,access-control-allow-origin
Date: Tue, 18 Aug 2015 19:48:46 GMT
Content-Length: 2192

<?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Request Error</title>
      </head>
      <body>
        <div id="content">
          <p class="heading1">Request Error</p>
          <p xmlns="">The server encountered an error processing the request. Please see the blah blah,and a useless call stack</p>
        </div>
      </body>
    </html>
HTTP/1.1400错误请求
缓存控制:专用
内容类型:text/html
服务器:Microsoft IIS/8.0
WWW-Authenticate:Basic-realm=“MyServices”
X-AspNet-Version:4.0.30319
X-SourceFiles:=?UTF-8?B?诸如此类
X-Powered-By:ASP.NET
访问控制允许来源:*
访问控制允许方法:GET、POST、PUT、OPTIONS
访问控制允许标头:授权、内容类型、X-Requested-With、接受、来源、访问控制请求方法、访问控制请求标头、访问控制允许来源
日期:2015年8月18日星期二19:48:46 GMT
内容长度:2192
请求错误
请求错误

服务器在处理请求时遇到错误。请看那些废话和无用的调用堆栈


服务器响应包括允许源代码:*。它还包括选项请求中请求的allow方法和allow标头。服务器是否还需要积极响应选项请求?我还缺少什么?

允许源代码*不足以告诉您的服务器它应该响应选项请求。我编辑的asp.net-web-api标记是正确的,是吗?我会在解决此问题时禁用身份验证。自定义标题都是有害的,因为您的应用程序只应该在响应飞行前选项请求时包含它们,虽然它们不是400的原因。检查此qa allow origin*不足以告诉服务器它应该响应选项请求。我编辑的asp.net-web-api标记是正确的,是吗?我会在解决此问题时禁用身份验证。自定义标题都是有害的,因为您的应用程序只应在响应飞行前选项请求时包含它们,尽管它们不是400的原因。请检查此qa