Делаю два сервиса. Один - фронт на Angular 2. Второй - бэк на Spring. Авторизация сделана через JWT.
Проблема в том, что при отправке запроса на бэк через postman все работает. Но вот при отправке запроса через Angular 2 возникает проблема с методом OPTIONS. Spring видит, что это не POST и почему-то не читает тело запроса.
Запрос из angular:
login(username: string, password: string): Observable<any> {
console.log(JSON.stringify({username, password}));
let headers = new Headers();
headers.append("Content-Type", "application/json; charset=utf8");
return this.http.post(`${this.url}/login`, JSON.stringify({username, password}), {headers: headers, withCredentials: true})
.map((response: Response) => {
let token = response.json().id_token;
if (token) {
localStorage.setItem('id_token', response.json().id_token);
return true;
} else {
return false;
}
});
}
Проверил - данные в теле запроса от angular уходят. В чем может быть дело и самое главное - как это поправить ?
В случае кросс-доменных запросов если заголовок Content-Type отличается от application/x-www-form-urlencoded, multipart/form-data или text/plain, то посылается предзапрос (preflight request). Его шлет сам браузер, а не Angular. Так что можно либо изменить Content-Type, либо не использовать кросс-доменных запросы удалив 'http://' из 'this.url', либо настроить spring чтобы он корректно обрабатывал preflight request.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости