我正在使用以下代码发送删除请求:
$http({method: 'DELETE', url: '/url'}).
success(function(status){
//return status
}).
error(function(status){
});
我在csrf
中设置了app.run()
,如下所示:
$http.defaults.headers.post['X-CSRFToken'] = getCookie("csrftoken");
GET和POST工作正常,这意味着标头包含一个csrf令牌,但在发送DELETE请求时,我收到403 Forbidden错误和状态:
detail: "CSRF Failed: CSRF token missing or incorrect."
我需要将额外的东西添加到DELETE请求的标题中吗?
答案 0 :(得分:1)
我只需添加一个HTTP请求拦截器即可将令牌添加到所有POST / PUT / DELETE请求中。例如
.config(function($httpProvider) {
$httpProvider.interceptors.push(function() {
return {
request: function(config) {
if (~['POST', 'PUT', 'DELETE'].indexOf(config.method)) {
config.headers['X-CSRFToken'] = getCookie("csrftoken");
}
}
};
});
})