如何在AngularJS中丢弃预检响应

时间:2017-05-16 09:46:02

标签: javascript angularjs rest cors

当我向我的服务发送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 = "";
    });

Chrome回复: enter image description here

1 个答案:

答案 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 //在你的控制器中你可以调用那个方法