javascript – 如何在AngularJS中丢弃预检响应

当向我的服务发送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响应:
《javascript – 如何在AngularJS中丢弃预检响应》

最佳答案 您无法丢弃预检OPTIONS请求.

此请求的目的是要求服务器发出实际请求的权限.您的预检响应需要确认这些标题才能使实际请求生效.

当您在不同的来源提出请求时,它们是必需的.

某些浏览器将此飞行前请求作为安全措施,以确保服务器信任所完成的请求.这意味着服务器了解在请求上发送的方法,来源和标头是安全的.

在你的情况下,你应该在post api响应中获得响应

$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
//在你的控制器中,你可以调用该方法

点赞