#javascript #angular
#javascript #angular
Вопрос:
Я пытаюсь вызвать API, чтобы получить текущие данные пользователя, и мне нужно прикрепить токен с Authorization
заголовком. Однако не удается вызвать API с ответом на ошибку 500.
Он работает абсолютно нормально с помощью Postman и curl, и я получаю информацию о пользователе.
Код для него, как показано ниже:
httpHeaders = new HttpHeaders ({
'Content-Type': 'application/json'
});
getCurrentUser(url){
var token = localStorage.getItem('token');
this.httpHeaders = this.httpHeaders.set('Authorization', `Bearer ${localStorage.getItem('token')}`);
return this.http.get<any>(url, { headers: this.httpHeaders });
}
Я пробовал разные способы объединения токена с префиксом носителя, однако получал авторизацию в консоли как «token-string» носителя (не уверен, что это причина сбоя моего API).).
Комментарии:
1. Можете ли вы проверить, является ли это проблемой cors?
2. Пожалуйста, выполните a
console.log(localStorage.getItem('token'))
и проверьте, действительно ли он содержит токен. Вы также можете проверить в окне браузера DevTools. Он находится в разделе хранилища в Firefox и разделе приложений в Chrome.3. Помимо избыточности
localStorage.getItem('token')
, все выглядит нормально. Код500
ошибки указывает на внутреннюю ошибку сервера. Вы должны проверить свой сервер и проверить наличие журналов ошибок, которые могут предоставить вам дополнительную информацию о том, что происходит не так. Также может быть отсутствующий токен в вашем локальном хранилище.4. Спасибо за ваши комментарии. CORS в порядке. Проблема была решена, как только я попробовал «Авторизацию»:
Bearer ${JSON.parse(localStorage.getItem('token'))}
.
Ответ №1:
public getCurrentUser(url: string): Observable<unknown> {
const token = localStorage.getItem('token');
// Launch DevTools to step through the code in the debugger;
debugger;
// check if token is valid string as well
if (token == null) {
throw new Error('Authorization token not found');
}
// Use local object
const httpHeaders = new HttpHeaders({
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
});
return this.http.get<unknown>(url, { headers: httpHeaders });
}
Если вы все еще получаете HTTP 500 internal server
сообщение об ошибке от сервера:
- Откройте DevTools и просмотрите сообщения об ошибках на
Console
Network
вкладке или, если таковые имеются. - Просмотрите журналы сервера, если у вас есть к ним доступ.