Django 和 AngularJS 都已经有 CSRF 支持,你的部分很简单。
首先,您需要在 Django 中启用 CSRF,我相信您已经这样做了,如果没有,请遵循 Django doc https://docs.djangoproject.com/en/1.5/ref/contrib/csrf/#ajax。
现在,Django 将设置一个以csrftoken
第一个 GET 请求命名的 cookie ,并期望X-CSRFToken
在以后的 POST/PUT/DELETE 请求中使用自定义 HTTP 标头。
对于 Angular,它需要命名的 cookie 并将XSRF-TOKEN
使用X-XSRF-TOKEN
标头执行 POST/PUT/DELETE 请求,因此您需要做一些调整以使两者相互配合:
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
在你的 js 代码的某处添加上面两行,module.config() 块是一个很好的地方。
而已。
注意:这是针对 angular 1.1.5,旧版本可能需要不同的方法。
更新:
由于 angular 应用程序不是由 django 提供的,为了让 cookie 被设置,angular 应用程序需要先向 django 发出 GET 请求。