AngularJs 1.x如何获取xcrsf令牌

时间:2019-02-25 17:15:56

标签: angularjs http

我尝试从我的角度应用程序中获取xcsrf令牌,然后使用该令牌将数据发布到后端。

在localhost中禁用CORS时,我能够安装xcsrf令牌并将其用于发布数据而不会出现问题。

但是,当我启用安全性时,似乎是新的浏览器在GET之前执行了自动选项请求。

    function fetchXCSRF(){
        var deferred = $q.defer();
        $http({
            url: reservationsEndPoint,
            method: 'GET',
            withCredentials: true,
            headers:
            {'X-CSRF-Token':'Fetch'},
            timeout:5000,
        }).then(function (response) {
            // console.log(response.headers('x-csrf-token'));
                // var xcsrfToken = response.headers('x-csrf-token');
                // xcsrfToken = response.headers('x-csrf-token');
                deferred.resolve(response);
            }, function (error) {
                deferred.reject(error.data.error.message.value);
            });
        return deferred.promise;
    }

然后响应标头中的xcsrf-token标头为空,

   fetchXCSRF().then(function(responseToken) {
                console.log(responseToken.headers('x-csrf-token'));
                $http({
                        url: reservationsEndPoint,
                        method: 'POST',
                        headers:
                        {'x-csrf-token': responseToken.headers('x-csrf-token')},
                        data:  newReservation,
                        timeout:5000,
                    }).then(function (response) {
                        deferred.resolve(response.d);
                        modelBuilder.setReservationToDisplay(response);
                    }, function (error) {
                        if(error.data.error.message.value.indexOf('not available.')>-1){
                            console.log("There is already a reservation at this time");
                        }
                        deferred.reject(error.data.error.message.value);
                    });
            });
            return deferred.promise;

非常感谢您的帮助,我已经尝试了1天以上!

0 个答案:

没有答案