Django:CSRF 与 AJAX
我发现问题/错误了吗?在 AJAX 中使用 CSRF。我根本不使用 {% csrf_token %}
。我只使用 AJAX 表单,因此 - 没有为 csrf 设置 cookie。在这种情况下 - 在此处输入链接描述是无用的:( 我可以使用 get_token 来生成它,但我必须将它放在我的所有网站中,所以它没有任何意义。
如何在不使用 csrf 标签的情况下制作 cookie?
I have a problem/bug found? in AJAX with CSRF. I don't use {% csrf_token %}
at all. I use only AJAX forms so - there is no cookie set for csrf. In taht case - enter link description here is useless :(
I can use get_token to generate it, but I have to put it in all my sites so it has no sense.
How can I make that cookie without using csrf tag?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
任何随机 32 位字母数字字符串都将用作令牌。只需将其保存在名为“csrftoken”的 cookie 中,然后将其与您的帖子一起提交即可。
这将自动生成一个令牌或重新使用现有的令牌。它将处理页面上的所有表单提交。如果您有场外表单,您需要确保它们不会运行此代码。
需要 jQuery 1.7+
Any random 32-digit alphanumeric string will work as the token. Simply save it in a cookie named "csrftoken", and then submit it with your post.
This will auto generate a token or re-use an existing one. It will handle all form submits on the page. If you have off-site forms you'll need to make sure they don't run this code.
requires jQuery 1.7+
您可以在视图上使用 csrf_exempt 装饰器
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt
You can use the csrf_exempt decorator on your view
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt
如果您将 csrf 令牌压印到服务器端的某个 JS 变量中,那么稍后您可以发送将被 Django 识别的自定义 HTTP 标头
,另请参阅 Q&A: Django CSRF仅在 Opera 上的 ajax post 请求失败
工作请求示例:
If you imprint csrf token into some JS variable on server side, then later you can send custom HTTP header that will be recognized by Django
also see that Q&A: Django CSRF failure on ajax post requests on Opera only
Example of working request:
你有考虑过禁用CSRF吗?
为此,只需删除中间件:'django.middleware.csrf.CsrfViewMiddleware',
have u consider disabling CSRF at all?
to do that just remove the middleware : 'django.middleware.csrf.CsrfViewMiddleware',