我是Django和AngularJS的新手,我几个小时都在努力。
AngularJS Code(我的控制器)用于POST到Django Server:
$http({
method: 'POST',
url: 'http://127.0.0.1:8000/polls/', // This is the Django server IP
data: {'string': 'body'}
}).then(function successCallback(response) {
$scope.var= "success";
}, function errorCallback(response) {
$scope.var= response; // To display error.
});
}
})
Django服务器代码(视图中):
def index(request):
return "true"
我得到的确切错误是: POST http://127.0.0.1:8000/polls/ 403(禁止)
错误详情 - CSRF验证失败。请求已中止。您看到此消息是因为此站点在提交表单时需要CSRF cookie。出于安全原因,需要此cookie,以确保您的浏览器不会被第三方劫持。 Blah blah。
修改 更喜欢在不影响Django的任何安全规定的情况下工作的解决方案
答案 0 :(得分:2)
您必须在帖子调用的标题中包含令牌csrf
var csrf ='{{ csrf_token }}';
$http({
method: 'POST',
headers: {'X-CSRFToken' : csrf },
url: 'http://127.0.0.1:8000/polls/', // This is the Django server IP
data: {'string': 'body'}
}).then(function successCallback(response) {
$scope.var= "success";
}, function errorCallback(response) {
$scope.var= response; // To display error.
});
}
})
或免除此次通话的csrf令牌
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def index(request):
return "true"
答案 1 :(得分:0)
如果你有激活的cors标题。
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def index(request):
return "true"