当我向我的服务发送http.post请求时,我最初发送一个Option请求(根据Cors的要求)。
但是我已经意识到我的 OPTIONS (飞行前)请求在其响应中没有返回response.data
,但我的 POST 请求是。这会产生问题,因为我需要从 POST 响应中访问response.data
...
Angular是否允许我们以某种方式放弃http.post
来电中的OPTIONS响应?
$http.post("http://api.worksiteclouddev.com/RestfulAPI/api/vw_PeopleListSiteAccess_Update/Get/", JSON.stringify(vm.content))
.then(function (response) {
//success
vm.person = {
"firstname": response.data.Firstname,
"surname": response.data.surname
};
console.log(response.data);
},
function (error) {
//failure
console.log("Something went wrong..." + error.status);
})
.finally(function () {
vm.ptsnumber = "";
});
答案 0 :(得分:1)
您无法放弃预检OPTIONS请求。
此请求的目的是要求服务器发出实际请求的权限。您的预检响应需要确认这些标题,以便实际请求起作用。
当您在不同的来源提出请求时,它们是必需的。
此飞行前请求由某些浏览器作为安全措施,以确保服务器信任所完成的请求。这意味着服务器理解在请求上发送的方法,来源和标头可以安全地进行操作。
在您的情况下,您应该在post api response中获得响应
$http.post(
"http://api.worksiteclouddev.com/RestfulAPI/api/vw_PeopleListSiteAccess_Update/Get/", JSON.stringify(vm.content)
).then(function (response) {
console.log(response.data);
//You should get your response here
},
function (error) {
console.log("Something went wrong..." + error.status);
});
//您可以创建更多外部服务并在该服务中调用api //在你的控制器中你可以调用那个方法