【发布时间】:2016-02-08 03:45:09
【问题描述】:
我正在编写一个 Angular 应用程序,我正在尝试使用 $http 服务连接到我们的 API。
$http.post('https://backend-test/***/v001/login', {'userName': 'admin', 'password': 'passtest'}, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}).then(function success(response) {
console.log(response);
});
但是,我不断收到此错误:
XMLHttpRequest 无法加载 https://backend-test/***/v001/登录。回复 对于预检有无效的 HTTP 状态代码 403
它似乎发送了一个 OPTIONS 请求而不是一个 POST 请求:
请求方法:OPTIONS
奇怪的是,当我使用这个工具时它可以正常工作:
有什么想法吗?
【问题讨论】:
-
我认为你必须把关键参数像
$http.post('https://backend-test/***/v001/login', {params : {'userName': 'admin', 'password': 'passtest'}}, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}).then(function success(response) { console.log(response); }); -
@pbolduc
params的使用不适用于发布请求 -
服务器似乎没有启用 CORS 和/或似乎没有设置为处理浏览器在发出跨域请求时将发送的 OPTIONS 预检请求
-
它将在 hurl.it 或 Runscope 上工作,因为它们是基于服务器的客户端发出请求。他们不需要像您的客户端 JS 那样使用 CORS。
标签: angularjs post http-headers cors