Как просмотреть все заголовки ответа в узле Express? - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу видеть в среде Node Exprees все заголовки, которые отправляются клиенту

headers

Но когда я вижу, сделайте это:

app.get("/", (req, res) => {
  console.log(res.getHeaders());
});

я вижу только это:

enter image description here

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Пока вы просматриваете исходящие заголовки, это единственные, которые были добавлены до сих пор. Остальные будут добавлены кодом, который отправляет фактический ответ, или другим промежуточным программным обеспечением.

Если вы хотите увидеть все заголовки, которые в конечном итоге были добавлены в ответ перед его отправкой, вы можете отслеживать finish event и THEN смотрят на заголовки:

app.use(function(req, res, next) {
    res.on('finish', () => {
        console.log(`request url = ${req.originalUrl}`);
        console.log(res.getHeaders());
    });
    next();
});

Иногда они не включают заголовки date, content-type или content-length, если они специально не установлены кодом отправки. Это происходит потому, что если они не установлены отправляющим кодом, то библиотека HTTP добавляет эти заголовки на более низком уровне, так как отправляет заголовки и, таким образом, res.getHeaders() не получает их и никогда не знает о них.

1 голос
/ 23 февраля 2020

Редактировать: я пропустил ваш первый скриншот ... Используете ли вы промежуточное программное обеспечение? Похоже, вы используете промежуточное ПО CORS , по крайней мере - именно поэтому вы показываете больше заголовков, чем значения по умолчанию.

Это похоже на Узел / Express отправляет заголовок Content-Length, когда он может ..

Заголовок Date является обязательным для HTTP spe c, но выглядит как вы можете изменить это поведение в Node / Express - я предполагаю, что по умолчанию Node / Express устанавливает это значение в true.

Я проверил настройку res.sendDate = false, и заголовок даты не был отправлен, так что похоже, что этот заголовок установлен по умолчанию для вас, скорее всего, как последний шаг в ответе?


С res.sendDate = false;

enter image description here


Без настройки res.sendDate (по умолчанию) :

enter image description here


В общем, я предполагаю, что заголовки, которые вы не видите, когда установлены console.log(res.getHeaders()) по узлу / Express по умолчанию ..

Я не смог найти в документах что-нибудь о заголовках ответов по умолчанию (за пределами заголовка даты), но, возможно, я упустил из виду что-то. Документы Express не имеют ничего, поскольку они просто используют встроенный модуль http от Node.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...