我刚刚发现一个奇怪的问题,我使用 tornado 来运行我的网站,并且在 tornado POST 中需要 _xsrf 参数,以下代码在我使用 jQuery 版本 1.7.2 时运行良好,但是当我重新打开浏览器时出现 POST 403 错误(保留 cookie活着) 在我将 jQuery 更改为 1.8.3 版本之后...但是 1.7.2 和之前的版本可以正常工作...
龙卷风中的 403 表示 _xsrf 不正确。关键是当我重新打开浏览器时发生 403 错误,我仍然登录但无法 POST。
有人知道问题吗?以下是代码
function getCookie(name) {
var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
return r ? r[1] : undefined;
}
jQuery.postJSON = function(url, args, callback) {
args._xsrf = getCookie("_xsrf");
$.ajax({
url: url, data: $.param(args), dataType: "text", type: "POST", async: true,
success: function(response) {
if (callback) callback(eval("(" + response + ")"));
},
error: function(response) {
try{
args._xsrf = getCookie("_xsrf");
$.ajax({url: url, data: $.param(args), dataType: "text", type: "POST", async: true,
success: function(response) {
if (callback) callback(eval("(" + response + ")"));
}
});
}
catch(e){
}
}
});
};