1

Django 需要它,因此到服务器的 ajax 帖子需要 CSRF 保护。但是 CSRF 要求启用 cookie 或 django 将 404 请求。假设没有人启用 cookie,我应该如何处理我的 ajax 帖子?我不想使用 @exempt_csrf 装饰器来解决安全问题。

(不确定我正在做的事情是否需要 csrf 保护,ajax 请求仅用于支持和反对本网站上的帖子)

谢谢你们!

4

3 回答 3

1

如果没有 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,所以这对您的情况没有帮助。)

于 2012-09-10T17:38:58.330 回答
0

我会像@Tomasz 写的那样写一点点变化。

$.ajax({
    url: '/myurl',
    type: 'POST',
    data: {
        csrfmiddlewaretoken: $('input[name="csrf_token"]').val(),
        mydata: 'myparam'
    }
});

如果您使用的是 jquery。

于 2012-09-10T17:30:42.853 回答
0

Django 的 CSRF 保护工作需要 Cookie。

您可以在此处获取详细信息:https ://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#how-it-works

请记住,Django 的整个会话框架也是基于 cookie 的,因此如果您有很多用户禁用了他们的 cookie,您将遇到其他问题 - 例如,身份验证。

于 2012-09-10T17:45:55.353 回答