Я отправляю почтовый запрос на сервер, который отвечает двумя важными для клиента заголовками: имя пользователя и токен доступа.
На вкладке «Сеть» инструмента отладки Chrome отображаются следующие данные для ответа:

Я также регистрирую ответ на консоли:

Здесь заголовков нет - почему это? Мой код для входа:
this.usersService.registerNewUser(firstName, lastName, email, username, birthday, password).subscribe(
res => {
console.info(res);
},
err => {
console.info("Error" + JSON.stringify(err));
}
);
Я хотел получить доступ к имени пользователя заголовка с помощью res.headers.username.
Мой запрос выглядит так:
this.http.post<string>(
"http://localhost:2002/users",
JSON.stringify({
firstName: firstName,
lastName: lastName,
email: email,
username: username,
birthday: birthday,
password: password
}),
{
observe: "response"
}
);
Что я сделал не так?
@SiddharthAjmera Это не дубликат! Посмотрите на мой запрос, который я только что добавил в вопрос - я установил в поле «наблюдать» значение «ответ»!
это http экземпляр HttpClient?
Вы можете попробовать отправить заголовок ответа Access-Control-Expose-Headers с сервера.
@SiddharthAjmera да, это так
@ user184994 Каким должно быть значение для "Access-Control-Expose-Headers"?
Список заголовков, разделенных запятыми, которые вы хотите раскрыть, например access-token, username.
@ user184994 Очень хорошо - это работает, большое спасибо! Не могли бы вы опубликовать это как ответ, чтобы я мог отметить его как решение?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


обычно ответ - это просто «тело», а вам нужны «заголовки». на res вы можете использовать:
this.header = res.headers.get('header-name');
Но это решает еще одну проблему после получения заголовков во внешнем интерфейсе, потому что я не могу прочитать свойство напрямую с помощью headers.field - мне нужно использовать get!
Передняя часть не сможет получить доступ к этому заголовку, если серверная часть этого не позволит.
Для этого вам необходимо отправить заголовок Access-Control-Expose-Headers из бэкэнда, и значение должно быть разделенным запятыми списком значений, которые вы хотите раскрыть, то есть access-token, username.
Просто хочу дать дополнительную информацию. Вчера потратил на это несколько часов и сходил с ума.
Если у вас есть access-control-expose-headers из бэкэнда. И если вы просто печатаете объект ответа, такой как этот console.info(res) или console.info(res.headers), он не будет отображать заголовки, потому что Angular использует ленивую загрузку. Вам нужно явно указать, какой заголовок вам нужен console.info(res.headers.get('your-header'))
Возможный дубликат Чтение заголовков ответа из ответа API - Angular 5 + TypeScript