Django 需要它,因此到服务器的 ajax 帖子需要 CSRF 保护。但是 CSRF 要求启用 cookie 或 django 将 404 请求。假设没有人启用 cookie,我应该如何处理我的 ajax 帖子?我不想使用 @exempt_csrf 装饰器来解决安全问题。
(不确定我正在做的事情是否需要 csrf 保护,ajax 请求仅用于支持和反对本网站上的帖子)
谢谢你们!
如果没有 cookie,Django 的内置 CSRF 保护将无法工作。 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-it-works
如果您认为需要,您需要为这些视图滚动您自己的 CSRF 保护。或者使用类似https://github.com/mozilla/django-session-csrf的东西(根据 Abid A 的回答,会话框架需要 cookie,所以这对您的情况没有帮助。)
我会像@Tomasz 写的那样写一点点变化。
$.ajax({
url: '/myurl',
type: 'POST',
data: {
csrfmiddlewaretoken: $('input[name="csrf_token"]').val(),
mydata: 'myparam'
}
});
如果您使用的是 jquery。
Django 的 CSRF 保护工作需要 Cookie。
您可以在此处获取详细信息:https ://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#how-it-works
请记住,Django 的整个会话框架也是基于 cookie 的,因此如果您有很多用户禁用了他们的 cookie,您将遇到其他问题 - 例如,身份验证。