Mam żądanie ajax GET odpalam w sekcji Knockout kodu, gdzie muszę zapewnić nagłówek Authorization jest ustawiony.Jaki jest poprawny sposób dołączania nagłówka autoryzacji do żądania Ajax?
Moje preferencje to zwykle iść z metod skrót jQuery tak:
$.getJSON("/api/business", function (allData) {
var mappedOrgs = $.map(allData, function (item) { return new Business(item) });
self.businesses(mappedOrgs);
});
to jest w porządku na własną rękę, bez wymogu auth ale jeśli muszę to okaziciela token Próbowałam tym bardziej rozwlekły sposób:
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'); });
Nawet starając się zmusić ten problem poprzez $ .ajaxSend() metoda nie przynosi żadnych rezultatów.
$(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);
}
});
Co więc mam z widokiem? Sprawdzam każde żądanie w Skrzypku, a nagłówek Auth nigdy nie jest dołączony. Jest oczywiście dobry sposób, aby to zrobić, ale gdzieś brakuje jakiegoś kroku. Każda pomoc doceniona.
Czy jesteś pewien, że 'sessionStorage.getItem' poprawnie zwraca token? – nemesv
Tak. Sprawdziłem to w debugerze i kodzie. –