AngularJS+;Asp.net WebApi-由于CORS,无法获得有效的身份验证

AngularJS+;Asp.net WebApi-由于CORS,无法获得有效的身份验证,angularjs,asp.net-web-api,cors,Angularjs,Asp.net Web Api,Cors,我有一个AngularJS应用程序,它与ASP.NETWebAPI后端对话 UI和API都位于同一域/服务器上,但位于不同的端口上: 用户界面: API: UI正在成功地与API进行所有必需HTTP方法(GET、POST等)的通信,但我无法使身份验证正常工作 当调用“/login”时,我从API得到以下响应: 访问位于“”的XMLHttpRequesthttps://www.example.com:8888/api/login“起源”https://www.example.com'已被COR

我有一个AngularJS应用程序,它与ASP.NETWebAPI后端对话

UI和API都位于同一域/服务器上,但位于不同的端口上:

  • 用户界面:
  • API:
UI正在成功地与API进行所有必需HTTP方法(GET、POST等)的通信,但我无法使身份验证正常工作

当调用“/login”时,我从API得到以下响应:

访问位于“”的XMLHttpRequesthttps://www.example.com:8888/api/login“起源”https://www.example.com'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态

ASP.NETWebAPI中的Web.Config摘录 有趣的是。。。 。。。如果我将“Access Control Allow Origin”头设置为通配符“*”,则会得到另一条消息,这将表明API正确地将API调用标识为与身份验证相关

访问位于“”的XMLHttpRequesthttps://www.example.com:8888/api/login“起源”https://www.example.com'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为时,响应中的'access control Allow Origin'标头的值不得为通配符'*'“包括”。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制


有人能解释一下我做错了什么吗?

您可能需要包括您在UI上使用的端口。像这样:

<add name="Access-Control-Allow-Origin" value="https://www.example.com:4200" />

attemptLogin (userId, password) {
  var data = {
    UserId: userId,
    Password: password
  };
     
  return this.$http.post("https://www.example.com:8888/login", data, { withCredentials: true });       
}

<add name="Access-Control-Allow-Origin" value="https://www.example.com:4200" />