为什么$ http.delete在angularJS中不起作用?

为什么$ http.delete在angularJS中不起作用?

问题描述:

我尝试使用$ http.delete使用Django和获得HTTP 403 我的JS文件如下:

var myApp = angular.module('myApp',['ui.bootstrap']); 

    myApp.run(function($http) { 
     $http.defaults.headers.post['X-CSRFToken'] = $.cookie('csrftoken'); 
    }); 


    myApp.controller('PostsListController', ['$scope','$http',function($scope,$http) { 
     $http.get('/api/v1/posts/').success(function (data) { 

     $scope.posts = data; 

     }); 
    $scope.deletePost = function(post) { 
       $http.delete('/api/v1/posts/'+ post.id + '/'); 
    }; 

    }]); 

从控制台细节:

{detail: "CSRF Failed: CSRF token missing or incorrect."} 
detail 
: 
"CSRF Failed: CSRF token missing or incorrect." 
+0

检查您的CSRF令牌。它可能不会在cookie中设置。 –

+0

您确定cookie存在并正在设置吗? – mariocatch

+0

我知道令牌中的问题,但我不知道要设置什么值 –

我通过重写方法.RUN解决我的问题( )

myApp.run(function($http) { 
    $http.defaults.xsrfCookieName = 'csrftoken'; 
$http.defaults.xsrfHeaderName = 'X-CSRFToken'; 
});