gpt4 book ai didi

jquery - 将 Authorization header 附加到 Ajax 请求的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 23:06:46 25 4
gpt4 key购买 nike

我有一个 ajax GET 请求,我在 Knockout 代码的一部分中触发,我需要确保设置了 Authorization header 。

我通常倾向于使用 jQuery 速记方法,如下所示:

$.getJSON("/api/business", function (allData) {
var mappedOrgs = $.map(allData, function (item) { return new Business(item) });
self.businesses(mappedOrgs);
});

这本身就很好,没有任何身份验证要求,但如果我需要包含不记名 token ,我一直在尝试更冗长的方式:

var token = sessionStorage.getItem(tokenKey);
var headers = {};
if (token) {
headers.Authorization = 'Bearer ' + token;
}

$.ajax({
type: 'GET',
url: '/api/business',
headers: headers
}).done(function (data) {
var mappedOrgs = $.map(data, function (item) { return new Business(item) });
self.businesses(mappedOrgs);
}).fail(function () { console.error('api call failed'); });

即使尝试通过 $.ajaxSend() 方法强制解决问题也不会产生任何结果。

$(document).ajaxSend(function (event, xhr, settings) {
var token = sessionStorage.getItem(tokenKey);
var headers = {};
if (token) {
console.info("Found token. Attaching to headers.");
headers.Authorization = 'Bearer ' + token;
settings.headers = headers;
//console.info(headers);
}
});

那么我忽略了什么?我正在检查 Fiddler 中的每个请求,并且从未附加 Auth header 。显然有一个正确的方法可以做到这一点,但我在某个地方遗漏了一步。任何帮助表示赞赏。

最佳答案

我使用以下内容:

function getListData(url) {
var d = new $.Deferred();
cfg.apiLoad();

$.ajax({
url: baseUrl + url,
type: 'GET',
headers: { "x-access-token": secure.getToken(), "x-access-finger": finger.getFinger() },
dataType: 'json'
}).fail(function(a, b, c) {
cfg.failError(c);
d.reject(c);
}).done(function (r) {
cfg.apiDone(r);
d.resolve(r.ListResults);
});

return d.promise();
}

您可以在其中添加任意数量的额外 header ,忽略 cfg。东西,但这是在网络文件中,就像一次写入一样,使用 everywere
getListData('/api/Name/Endpoint').then(function(r){ '//做某事});

这样就解决了必须重复等的任何问题,并且像一个魅力一样工作。我的 API 对于任何类型的结果都会返回相同的模型

关于jquery - 将 Authorization header 附加到 Ajax 请求的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31268832/

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