[英]Select2 Ajax request authorization not being sent
尝试向需要 Auth 令牌的端点发出 get 请求。 但无论何时发出请求 - 它都会返回 401 错误(“需要授权 header”)。令牌是从 chrome.storage 异步检索的。但似乎没有在 ajax 请求中发送。感谢任何帮助。
ajax: {
type: "GET",
beforeSend: async function (request) {
var token = await bearerToken();
request.setRequestHeader("Authorization", token);
},
url: function (params) {
return getChannelURL(params.term);
},
dataType: "json",
data: function (response) {
// data -> entire json object
return response;
},
// data.data -> array containing all the channel elements
processResults: function (data, params) {
for (var i = 0; i < data.data.length; i++) {
data.data[i].text = data.data[i].text || data.data[i].name;
}
return {
results: data.data,
};
},
cache: true,
},
minimumInputLength: 1,
placeholder: "Select a Channel",
width: "resolve",
templateResult: formatChannelData,
});
下面是存储令牌的function
bearerToken = async () => {
var tokenRetrieved = await helper.getLocalStorage('tokenElement')
var token = tokenRetrieved.tokenElement
return ("Bearer "+ token);
}
您的 AJAX 应如下所示:
async function sendAJAX() {
var token = await bearerToken();
ajax: {
type: "GET",
beforeSend: async function (request) {
request.setRequestHeader("Authorization", token);
},
url: function (params) {
return getChannelURL(params.term);
},
dataType: "json",
data: function (response) {
// data -> entire json object
return response;
},
// data.data -> array containing all the channel elements
processResults: function (data, params) {
for (var i = 0; i < data.data.length; i++) {
data.data[i].text = data.data[i].text || data.data[i].name;
}
return {
results: data.data,
};
},
cache: true,
},
minimumInputLength: 1,
placeholder: "Select a Channel",
width: "resolve",
templateResult: formatChannelData,
});
}
}
function 将等待创建令牌,然后发送 AJAX。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.