Я вижу заголовок «x-auth-token» в Chrome DevTools.

Однако заголовок не отображается в моем ответе на выборку. Пожалуйста, помогите мне использовать данные заголовка.
Я использую NodeJS в качестве серверного API и ReactJS в качестве интерфейса. Это мои файлы.
Промежуточное ПО NodeJS - cors.js
module.exports = function enableCorsSupport(app) {
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
res.header("Access-Control-Allow-Headers", "Content-Type, x-auth-token");
res.header("Access-Control-Expose-Headers", "x-auth-token");
next();
})
}
Маршрут NodeJS - users.js
router.post('/login', async (req, res) => {
// NOTE: code left out so post would be smaller
const token = user.generateAuthToken();
res.header('x-auth-token', token).send(_.pick(user, ['_id', 'firstName', 'email', 'isAdmin']));
})
ReactJS - мой запрос на выборку
fetch('http://localhost:4000/api/users/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: this.props.email,
password: this.props.password
})
})
.then(res => {
console.info('res.headers', res.headers)
return res.json()
})
.then(data => {
console.info(data);
})
.catch((err) => {
console.info(err)
})
}
Это находится в моей консоли Chrome из console.info в моем успешном запросе на выборку. Заголовки в ответе заголовка пусты. Пожалуйста, порекомендуйте. К вашему сведению, это данные пользовательского тестирования.




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


Объект Заголовок не пустой. Это просто не обычный объект, поэтому он не имеет своего содержимого в качестве свойств в своем экземпляре. Таким образом, вы не увидите заголовки / значения в представлении console.info.
Чтобы получить конкретное значение заголовка, вам нужно использовать метод get()
var token = response.headers.get('x-auth-token');
console.info(token);
Вы также можете просмотреть его, используя for ... of
for(const header of response.headers){
console.info(header);
}
Демо
fetch('https://cors-anywhere.herokuapp.com')
.then(res=>{
for(const header of res.headers){
console.info(`Name: ${header[0]}, Value:${header[1]}`);
}
});С помощью Node.js я нашел это решение, используя visibleHeaders:
const cors = require('cors');
const express = require('express');
// ..........
var app = express();
app.use(cors({
exposedHeaders: ['x-auth-token'],
}));А для чтения нормально:
x_auth_token = res.headers.get('x-auth-token');Решил мою проблему
Другой способ раскрытия заголовка x-auth-token -
res
.header("x-auth-token", token)
.header("access-control-expose-headers", "x-auth-token")
.json(data);