angularjs如何设置像jQuery一样的ajax

问题描述 投票:1回答:2

我如何在Angular JS中执行此代码

$.ajaxSetup({
   complete: function (jqXHR) {
      var new_token = jqXHR.getResponseHeader('X-CSRF-Token');
      $('meta[name="_token"]').attr('content', new_token);
   }
});

当我使用angular $ http发布时,我想设置新令牌

jquery angularjs ajax
2个回答
1
投票

好的,这应该工作:

工厂定义:

myApp.factory('tokenInterceptorService', ['$q',
    function CsrfTokenInterceptorService($q) {

        var CSRF_TOKEN_HEADER = 'X-CSRF-TOKEN';

        var token;


        var service = {
            response: onSuccess,
            responseError: onFailure,
            request: onRequest,
        };

        return service;

        // Private functions.
        function onFailure(response) {
            if (response.status === 403) {
                //DO SOMETHING
            }

            return $q.reject(response);
        }

        function onRequest(config) {
            //SET TOKEN TO SEND
            config.headers[CSRF_TOKEN_HEADER] = token;


            return config;
        }

        function onSuccess(response) {
            //SET HERE NEW TOKEN FROM REQUEST RESPONSE
            var newToken = response.headers(CSRF_TOKEN_HEADER);


            if (newToken) {
                token = newToken;
            }

            return response;
        }
    }
]);

配置定义:

.config(function($httpProvider) {
    $httpProvider.interceptors.push('tokenInterceptorService');
});

0
投票

您可以使用interceptors来推送http请求的令牌

//Assuming you've created an module,

app.config([ '$httpProvider',   function($httpProvider) {
 $httpProvider.interceptors.push('CSRFInterceptor');
}]);
app.service('CSRFInterceptor', [function() {
this.request = function(config) {
    config.headers['X-CSRF-Token']= getCSRFToken();
    return config;
};
}]);
© www.soinside.com 2019 - 2024. All rights reserved.