Django Ajax"FORBIDDEN"错误

Chr*_*ris 16 python django ajax json

我已经看到人们在尝试发出远程Ajax请求时遇到禁止错误的情况,但是我正在做一个本地请求,我也在我的中间件中打开了CSRF.

errorThrown返回"Forbidden"

我认为问题可能是我正在尝试将其发送到普通视图(当前页面)...我不确定我的预处理器是否返回到视图以重新呈现页面..或者如果它是返回我当前的页面.(不要以为我解释得那么好)

希望这能为您提供足够好的照片.任何/所有帮助表示赞赏.

.ajax:

jQuery.ajax({
        type: "POST",
        dataType: "json",
        data: dataString,
        success: function(json) {
              jQuery(".signup").attr('disabled', false);
              $('.success').show();
              console.log(json.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
              jQuery(".signup").attr('disabled', false);
              $('.fail').show().append(errorThrown);
              console.log(textStatus);
        }

    });
Run Code Online (Sandbox Code Playgroud)

Luk*_*ger 20

即使请求属于同一域,您也需要CSRF令牌.这里有代码为您的AJAX请求添加CSRF令牌(使用jQuery):

https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/#ajax

此链接指向1.7版,如果您使用的是不同版本的Django,则可以从右下方的浮动菜单中选择您的版本.

  • 值得注意的是,链接指向版本1.3,并且代码自此稍有改变. (2认同)

Ole*_*siy 9

如果你打开csrf,你会得到403错误,尝试加入views.py以查看是否导致它:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
view class/method
Run Code Online (Sandbox Code Playgroud)

  • 我必须恭敬地不同意这个答案.将CSRF令牌添加到请求比将CSRF完全免除视图要好得多. (3认同)
  • @Luke我第二个!当然,一旦您知道这是问题,请将CSRF保护重新添加到位. (2认同)