【发布时间】:2011-12-14 07:16:57
【问题描述】:
我正在页面中使用 jquery 开发一个简单的 ajax 调用($.ajax 函数,类型、url 和数据作为选项参数),但出现 403 错误。
所以我在 $.ajax 函数中添加了一个用于 csrf 的进一步选项参数,并且相应的标记正确地显示在模板中。
但是我又遇到了 403 错误。
我还尝试向视图处理程序(在 views.py 中)添加一个 csrf 装饰器,例如 @csrf_protect 或 @requires_csrf_token,但没有任何改变。
有什么帮助吗?
我已经看到这种模式在 django https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#s-ajax 中进行 ajax 调用
但是我做一个简单的ajax调用真的太多代码了,所以我找到了一个简短的解决方案
【问题讨论】:
-
文档的存在是有原因的。你得到一个 403 因为 CSRF 令牌没有被传递。按照文档说的去做,你会没事的。
-
对不起,我不知道如何接受。现在我看到了接受的按钮。这对我来说根本不直观,如果有一个鼠标悬停事件处理程序可以在鼠标悬停时为按钮着色,我认为用户体验会更好。