在json中将数据从Angular 5前端发布到Django时发生错误
Forbidden (403)
CSRF verification failed. Request aborted.
Help Reason given for failure:
CSRF token missing or incorrect.
Django log
Forbidden (CSRF token missing or incorrect.): /survey/creatDatabaseTable
[20/Apr/2018 06:33:18] "POST /survey/creatDatabaseTable HTTP/1.1" 403 2513
有些解决方案说您必须在前端代码中包含{% csrf_token %}
标记,那么我如何在angular5代码中实现该标记
答案 0 :(得分:2)
如果懒惰,请将@csrf_exempt
放在视图上!
(或@method_decorator(csrf_exempt)
if / survey / creatDatabaseTable使用基于类的视图
另一件事是查看SESSION_COOKIE_DOMAIN
设置。例如,' csrftoken'如果你从aaa.hasan.com到hasan.com做一个帖子,并且你在设置中没有通配SESSION_COOKIE_DOMAIN,那么这样做的cookie就不会工作
答案 1 :(得分:0)
django不提供Angular应用程序。所以需要先设置cookie。你需要先向django做一个GET请求。
angular.module( '[your module name]',
... [some dependencies] ...
'ngCookies',
... [other dependencies] ...
)
.run( function run( $http, $cookies ){
// For CSRF token compatibility with Django
$http.defaults.headers.post['X-CSRFToken'] = $cookies.get('csrftoken');
})