Я пытаюсь выполнить вход из Angular 7 с бэкэндом безопасности Spring:
login(username: string, password: string) {
const formData = new FormData();
formData.append('username', username);
formData.append('password', password);
return this.http.post<UserInfo>(`${API_URL}/login`, formData, {observe: 'response'})
.pipe(map(response => {
const jwtToken = response.headers.get(AUTHORIZATION).replace('Bearer', '').trim();
const userInfo = response.body;
if (jwtToken && userInfo) {
const user = new User(username, password, jwtToken, userInfo);
localStorage.setItem(CURRENT_USER, JSON.stringify(user));
this.currentUserSubject.next(user);
}
return response;
}));
}
Но response.headers просто пуст и не содержит никаких заголовков.Инструменты Postman и Chrome dev показывают много заголовков и даже тот, который мне нужен - Авторизация.Я рассмотрел много вопросов SO и проблем github, но все они говорят одно и то же, что не работает для меня - просто перечислить заголовок в CORS Access-Control-Expose-Headers, но я это сделал, и ничего не изменилось.Вот соответствующая конфигурация Spring:
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.addAllowedOrigin("http://localhost:4200");
configuration.addExposedHeader("Authorization");
configuration.addAllowedMethod("*");
configuration.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
На данный момент я застрял и не знаю, как сделать Angular доступ к этим заголовкам: