Angularjs应用程序无法通过POST方法跨域

时间:2016-12-20 12:48:16

标签: javascript angularjs node.js rest asp.net-web-api

我正在尝试调用ASP.Net web api的post方法,该方法已在web配置中启用了访问跨域的功能。

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

我的角度应用是一个快速应用程序。它调用post方法如下。

method: "POST",
  data: data,
  url: "http://api.justbooksaloon.com/api/Customer/Login",
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'POST',
    'Access-Control-Allow-Headers': 'Content-Type, Origin, X-Requested-With, Accept'

但它给了我以下错误。

  

XMLHttpRequest无法加载http://api.justbooksaloon.com/api/Customer/Login。请求标头字段Access-Control-Allow-Origin在预检响应中不允许使用Access-Control-Allow-Origin。   angular.js:14110 POST http://api.justbooksaloon.com/api/Customer/Login null

enter image description here

1 个答案:

答案 0 :(得分:1)

Access-Control-*标头是响应标头。

您正尝试将其设置为请求标题。

由于它们不是标准请求标头,因此您会触发预检请求,询问服务器是否可以接受。

服务器并不期望它们(它们是响应标头并且作为请求标头没有意义)所以它表示&#34; no&#34;。

请勿尝试在客户端JavaScript中设置它们。