【发布时间】:2012-07-17 12:41:49
【问题描述】:
我遇到过以下我想了解的情况(使用 Django1.4 和 jQuery 1.7.1): 我通过 jQuery 'ajax' 函数提交了一个表单,在此请求完成之前,我单击另一个提交相同表单但使用 jQuery 'submit' 函数的元素。我得到的响应 - 403,CSRF 验证失败。现在,当然,为了防止这个错误,禁用多个同时提交就足够了(它们自己工作得很好),但这无助于理解特定错误的来源。
谁能解释一下?每个会话生成一次 csrf 令牌,因此对于后一个请求,它不会是某种 csrf 不匹配。 这是否与 jQuery 处理请求的方式有关?
【问题讨论】:
-
如果您自己而不是与 ajax 提交同时进行,那么 jQuery 的“提交”是否有效?
-
是你的ajax properly 发送POST。您能否提供确切的错误消息,因为在来源中我没有看到您的错误
REASON_NO_REFERER = "Referer checking failed - no Referer." REASON_BAD_REFERER = "Referer checking failed - %s does not match %s." REASON_NO_CSRF_COOKIE = "CSRF cookie not set." REASON_BAD_TOKEN = "CSRF token missing or incorrect." -
@Anentropic:是的,提交单独完成时有效。
-
@b1-:确切的消息是:CSRF 令牌丢失或不正确。
-
@fjern 在我的回答中很少研究。使用 PyCharm 进行调试
标签: jquery django csrf django-csrf