Django需要它,因此服务器的ajax帖子需要CSRF保护。但CSRF要求启用cookie或django将404请求。假设没有人启用cookie,我应该如何处理我的ajax帖子?我不想使用@exempt_csrf装饰器来解决安全问题。
(不确定我的工作是否甚至需要csrf保护,ajax请求只适用于在本网站上提升和下载帖子)
谢谢你们!
答案 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,你将遇到其他问题 - 例如,使用身份验证。