Ho una richiesta GET ajax Sto sparando in una sezione del codice Knockout in cui ho bisogno di garantire che l'intestazione di autorizzazione sia impostata.Qual è il modo corretto di allegare un'intestazione Autorizzazione a una richiesta Ajax?
La mia preferenza è di solito per andare con i metodi di stenografia jQuery in questo modo:
$.getJSON("/api/business", function (allData) {
var mappedOrgs = $.map(allData, function (item) { return new Business(item) });
self.businesses(mappedOrgs);
});
Questo va bene da sola, senza alcun obbligo di autenticazione, ma se ho bisogno di includere il token portatore, ho cercato il modo più prolisso:
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'); });
Anche cercando di forzare la questione attraverso il $ .ajaxSend() metodo non produce alcun risultato.
$(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);
}
});
Quindi cosa sto trascurando? Sto controllando ogni richiesta in Fiddler e l'intestazione Auth non è mai allegata. C'è ovviamente un modo giusto per farlo, ma mi manca un passaggio da qualche parte. Qualsiasi aiuto apprezzato.
Sei sicuro che 'sessionStorage.getItem' restituisca correttamente il tuo token? – nemesv
Sì. L'ho controllato nel debugger e nel codice. –