如果没有启用cookie,我应该如何使用django的CSRF处理ajax / jquery POSTS?

时间:2012-09-10 17:21:10

标签: ajax django json csrf reddit

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

(不确定我的工作是否甚至需要csrf保护,ajax请求只适用于在本网站上提升和下载帖子)

谢谢你们!

3 个答案:

答案 0 :(得分: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,所以这对你的情况没有帮助。)

答案 1 :(得分:0)

我会像@Tomasz写的那样写一些小改动。

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

如果您使用的是jquery。

答案 2 :(得分:0)

Django的CSRF保护需要使用Cookie。

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

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