我正在尝试调用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
答案 0 :(得分:1)
Access-Control-*
标头是响应标头。
您正尝试将其设置为请求标题。
由于它们不是标准请求标头,因此您会触发预检请求,询问服务器是否可以接受。
服务器并不期望它们(它们是响应标头并且作为请求标头没有意义)所以它表示&#34; no&#34;。
请勿尝试在客户端JavaScript中设置它们。