我对 Django 和 AngularJS 都很陌生,我已经为此苦苦挣扎了几个小时。
(我的 Controller 的)AngularJS 代码 POST 到 Django 服务器:
$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"
我收到的确切错误是: 发布http://127.0.0.1:8000/polls/ 403(禁止)
错误详细信息 - CSRF 验证失败。请求已中止。您看到此消息是因为此站点在提交表单时需要 CSRF cookie。出于安全原因需要此 cookie,以确保您的浏览器不会被第三方劫持。巴拉巴拉。
编辑 更喜欢在不影响 Django 任何安全规定的情况下工作的解决方案
最佳答案
您必须在调用后的 header 中包含 token 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 token
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def index(request):
return "true"
关于python - Django/AngularJS : CSFR Token Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44590127/