gpt4 book ai didi

python - Django X-CSRFToken 已设置但仍然禁止 403

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:57 24 4
gpt4 key购买 nike

我开发了一个 Django 文件上传 API,它从客户端接收发布的数据并将数据保存为文件。

根据Django CSRF manual ,HTTP 请求 header 应使用 csrftoken cookie 值设置 X-CSRFToken。我已经通过下面的代码设置了 X-CSRFToken,但是 POST 请求仍然被 Django 服务器禁止(403),如下图所示。

$(document).ready(function(){
var authid
$.get("http://localhost:8000/v1/getAuthID?username=testuser1&password=123", function(data){
authid = data["authid"];
var csrftoken = $.cookie('csrftoken');
console.log(csrftoken);

$.ajaxSetup({
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
});

url = "http://localhost:8000/v1/file".replace("{authid}", authid).replace("{token}", csrftoken)
$.post(url, function(data){
})
})
})

enter image description here

您是如何通过向 Django 服务器发送 POST 请求来克服 Django CSRF 的?

谢谢!

最佳答案

将 ajaxSetup 移到 AJAX 成功函数之外,因为它是请求所必需的,而不是在它之后。

$(document).ready(function(){
var authid;
var csrftoken = $.cookie('csrftoken');
console.log(csrftoken);

$.ajaxSetup({
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
});


$.get("http://localhost:8000/v1/getAuthID?username=testuser1&password=123", function(data){
authid = data["authid"];

url = "http://localhost:8000/v1/file".replace("{authid}", authid).replace("{token}", csrftoken)
$.post(url, function(data){
})
})
})

关于python - Django X-CSRFToken 已设置但仍然禁止 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com