2016-12-07 3 views
0

Существуют различные вопросы, связанные с одной и той же концепции, но почему-то я не могу понять, простой HTTP GET коллировать с угловыми 2.Угловое 2 Http Get коллировать с проверкой подлинности

Я попробовал ту же услугу с почтальон, и он работает, но не с угловым сервисом.

Мой код выглядит следующим образом:

Service.js

let headers = new Headers({ 'Authorization': 'Basic ' + btoa('[email protected]:password') }); 
let options = new RequestOptions({ headers: headers }); 

return this.http.get(Config.Api.GetNavbar, options).map((res: Response) => res.json()); 

Я получаю 401 Несанкционированное ошибку, даже если я устанавливаю заголовки.

Любая помощь?

+0

Если это работает с почтальоном, то это также легко с помощью Angular, просто убедитесь, что вы отправляете те же заголовки и т. Д. – dfsq

+0

Да, я добавил те же заголовки. Я что-то упускаю? –

+0

Убедитесь, что значение заголовка 'Authorization', которое вы предоставляете API, является действительным, поскольку вы получаете' Unauthorized error', что означает, что значение заголовка на стороне сервера проверено и его значение недействительно – ranakrunal9

ответ

2

У меня было такое же поведение, когда я делал свои первые звонки REST с помощью Angular - он работал с Postman, но не с Angular.

Некоторые браузеры делают так называемый «предполетный» вызов перед «настоящим» вызовом AJAX, и этот первый вызов вызвал 401 Несанкционированный отклик. Проблема заключалась в том, что я не разрешал заголовкам OPTIONS без проверки подлинности. Обработка заголовков OPTIONS также была в запрещенной зоне, но информация об аутентификации отсутствовала, поэтому сервер отправил мне 401 Unauthorized.

В конце концов, решение заключалось в обработке запросов OPTIONS за пределами запретной зоны. Таким образом, клиент получает теперь OK для запросов заголовков OPTIONS и продолжает «реальный» вызов.

Поскольку я настроил обработку запросов на стороне сервера, все работает так, как ожидалось.

Смежные вопросы