【发布时间】:2016-06-10 05:27:57
【问题描述】:
我在从本地计算机向远程 django api 发出 POST 请求时收到 CSRF 令牌丢失或不正确的错误。
我在 AngularJS 上的设置:
.config(['$httpProvider', function($httpProvider){
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}]);
但我仍然收到 CSRF 令牌丢失或不正确错误。
我检查正在发送哪些标头,显然 Angular 没有发送 HTTP_X_CSRFTOKEN。
但我可以看到 cookie csrftoken=something 已发送。
有人知道怎么回事吗?
请求标头
POST /s/login/ HTTP/1.1
Host: server.somewhere.io:8000
Connection: keep-alive
Content-Length: 290
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/plain, */*
Origin: http://localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://localhost/thesocialmarkt/
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6,pt-BR;q=0.4,pt;q=0.2
Cookie: csrftoken=hiYq1bCNux1mTeQuI4eNgi97qir8pivi; sessionid=1nn1phjab5yd71yfu5k8ghdch2ho6exc
【问题讨论】:
-
不是因为我还有这个问题。
-
你的 django restframework 设置是什么?
-
我们没有使用 Django Rest 框架,我们的 API 是在 Django 中原生构建的
标签: angularjs django api csrf django-csrf