gpt4 book ai didi

javascript - 如何使用 Backbone 处理 401 未经授权的响应?

转载 作者:行者123 更新时间:2023-12-03 05:58:31 25 4
gpt4 key购买 nike

我用不同的 View 配置我的主干路由器。但在某些 View 上,我需要获取一个集合。如果用户未登录,服务器将返回 401 http 状态。

所以,我像这样配置 jQuery 的全局 ajax 设置:

$.ajaxSetup({
xhrFields: {
withCredentials: true
},
crossDomain: true,
error: function(jqXHR, textStatus, errorThrown) {
console.log("error ajax");
if (jqXHR.status == 401) {
console.log('error 401');
app.router.navigate('', { trigger: true });
}
}
});

但它永远不会进入错误回调,即使响应代码是 401。

最佳答案

我没有修改全局 ajax 选项,而是修改了 Backbone.sync 函数来处理身份验证。

Backbone.sync = (function(syncFn) {
return function(method, model, options) {
options = options || {};

var beforeSend = options.beforeSend,
error = options.error;

// Add headers
options.beforeSend = function(xhr) {
xhr.setRequestHeader('withCredentials', true);
if (beforeSend) return beforeSend.apply(this, arguments);
};

// handle unauthorized error (401)
options.error = function(xhr, textStatus, errorThrown) {
console.log("error sync");
if (error) error.call(options.context, xhr, textStatus, errorThrown);
if (xhr.status === 401) {
console.log('error 401');
app.router.navigate('', { trigger: true });
}
};

return syncFn.apply(this, arguments);
};
})(Backbone.sync);

关于javascript - 如何使用 Backbone 处理 401 未经授权的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831015/

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