gpt4 book ai didi

jquery - django 1.3 中使用 jquery 和 $.post 进行 CSRF

转载 作者:行者123 更新时间:2023-12-03 22:47:18 25 4
gpt4 key购买 nike

在 django 1.3 中,即使使用 ajax,您现在也必须使用 csrf。我使用 jquery,现在想将 csrf token 添加到 $.post 中。我怎样才能做到这一点?我对 jquery 不是很熟练,所以最好有一个好的描述。

这是一个评级应用程序,点击星星后就会发送帖子。我见过django docs但不明白在我的情况下该怎么办。我的代码如下:

$(function() {  
$("#avg").children().not(":input").hide();
$("#rating-widget").children().not("select").hide();

$caption = $("<span/>");

$("#avg").stars({captionEl: $caption});
$("#rating-widget").stars({
inputType: "select",
cancelShow: false,
captionEl: $caption,
callback: function(ui, type, value){
--------------> $.post($("#rating-widget").attr("action"), {score: value}, function(data){

});
}
});
$caption.appendTo("#rating-widget");

});

应该说,javascript不是在模板中,而是在静态文件中。最好将其放入模板中,以便我可以使用 {{ csrf_token }}

提前致谢!

最佳答案

将此代码放在您的函数之前。它将处理 CSRF。

$('html').ajaxSend(function(event, xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
// Only send the token to relative URLs i.e. locally.
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
});

关于jquery - django 1.3 中使用 jquery 和 $.post 进行 CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6194550/

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