我想將數據發佈到django應用程序,我使用angularjs http發佈。當我發佈數據時,我收到了403條禁止。於是,我改變了我的角度腳本這樣:無法在angularjs中創建包含crsf的發佈請求
var app = angular.module('omCenterLoginApp',['ngCookies']);
app.config(['$httpProvider', function ($httpProvider,$cookies) {
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
}])
app.controller('omCenterLoginContr',function($scope,$http){
$scope.login = function(){
var user = $scope.username;
var password = $scope.password;
$http({
method: 'POST',
url:'http://172.100.1.8:8080/api/test/',
data:{user:password},
}).then(function successCallback(response){
console.log(response.data)
},function errorCallback(response){
console.log(response.data)
})
}
});
我說,
$ httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; $ httpProvider.defaults.xsrfCookieName ='csrftoken';
但是,當我試圖發佈它時,仍然有響應403錯誤。 我檢查了帖子http標題。其中沒有X-CSRFToken。
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:2
Content-Type:application/json;charset=UTF-8
Host:172.100.1.8:8080
Origin:http://172.100.1.8
Pragma:no-cache
Referer:http://172.100.1.8/login.html?
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
我angularjs版本:1.5.8
但是,當我試圖訪問URL http://172.100.1.8:8080/api/test/,I可以得到 響應。
HTTP請求是:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Cookie:sessionid=jbg90n8118w6qhcmbom8txctui2s59ca; csrftoken=tBsTGiBtcgMOw8MFslu6v3UJEdSXkmYF
Host:172.100.0.48:8080
Pragma:no-cache
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
的csrftoken是存在的。
非常感謝您的幫助。
你可以檢查:是否存在cookie? –
我有完全相同的問題,並且cookie確實存在但未被髮送。同一版本的AngularJs和一切。這裏有可能的解決方案的更新? – btm1