Ich habe eine Ajax-GET-Anfrage Ich feuere in einem Abschnitt des Knockout-Codes, wo ich sicherstellen muss, dass der Authorization-Header gesetzt ist.Was ist der richtige Weg, um einen Autorisierungsheader an eine Ajax-Anfrage anzuhängen?
Meine Präferenz ist in der Regel mit den jQuery Stenografie Methoden zu gehen wie so:
$.getJSON("/api/business", function (allData) {
var mappedOrgs = $.map(allData, function (item) { return new Business(item) });
self.businesses(mappedOrgs);
});
Das ist gut auf seinem eigenen ohne Auth Anforderung, aber wenn ich den Inhaber Token enthalten müssen, ich habe versucht, die mehr langatmig Weg:
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'); });
auch nur zu versuchen, das Problem durch den $ .ajaxSend() -Methode keine Ergebnisse liefert nicht zu erzwingen.
$(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);
}
});
Also was übersehe ich? Ich überprüfe jede Anfrage in Fiddler und der Auth-Header wird nie angehängt. Es gibt offensichtlich einen richtigen Weg, aber ich vermisse einen Schritt irgendwo. Jede Hilfe wird geschätzt.
Sind Sie sicher, dass die 'sessionStorage.getItem' korrekt Ihr Token zurückgibt? – nemesv
Ja. Ich habe es im Debugger und im Code überprüft. –