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