Ниже в этом примере в переменной obj я получаю текст ответа. Как получить значения заголовка ответа с помощью этой библиотеки https node.js?
var options = {
hostname: hostname,
port: port,
path: pathMethod,
method: method,
headers: {
'Content-Type': APPLICATION_JSON,
'Authorization': BEARER + localStorage.jwtToken
},
rejectUnauthorized: false,
agent: false,
requestCert: false
};
return new Promise(function(resolve, reject) {
var req = https.request(options, function(res) {
res.setEncoding(ENCODING_UTF8);
res.on('data', function(result) {
try {
const obj = JSON.parse(result);
resolve({ 'httpStatus': PAGE_STATUS_200, 'result': obj });
}
catch(error) {
console.error(error);
resolve(resolve({ 'httpStatus': PAGE_STATUS_500 }));
}
});
res.on('end', () => {
console.info('No more data in response.');
});
});
req.on('error', function(err) {
console.info(`problem with request: ${err.message}`);
reject(err);
});
if (postData) {
req.write(postData);
}
req.end();
});
В моем браузере я получаю все необходимые заголовки. В чем может быть проблема, что я не могу получить заголовки с https node.js lib?
Возможный дубликат Получение заголовков HTTP с помощью node.js
Я пробовал использовать ваше решение, но получил только 4 параметра по сравнению с браузером Chrome, где я вижу 15 параметров (включая токен JWT). Также попробовал запрос с помощью Postman и получил те же 11 параметров в заголовке ответа. Но мне нужно получить один подходящий параметр (токен JWT), который я не могу получить с помощью https node.js lib.
Привет всем. Вот ответ на этот вопрос. github.com/infinitered/apisauce/issues/110 и stackoverflow.com/questions/37897523/… Короче говоря, проблема была в бэкэнде Spring Boot 2.



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


Заголовки ответа должны быть доступны в объекте res.headers, например
// Log headers
console.info('Headers: ', res.headers);
См .: https://nodejs.org/api/https.html
например
const https = require ('https');
// This will return the IP address of the client
var request = https.request({ hostname: "httpbin.org", path: "/ip" }, (res) => {
console.info('Headers: ', res.headers);
res.on('data', (d) => {
console.info('/ip response: ', d.toString());
});
});
// Также попробуйте использовать библиотеку запросов
var request = require('request');
var options = {
url: "https://httpbin.org/ip",
method: "get"
};
console.info('Requesting IP..');
request(options, function (error, response, body) {
if (error) {
console.error('error:', error);
} else {
console.info('Response: Headers:', response && response.headers);
}
});
Такое же объяснение. Это тоже хорошо. +1 к вашему ответу. :)
То же объяснение предоставлено по исходному вопросу, это явно дубликат.
Сделал, как вы и посоветовали, но в ответ из кода пришло всего 4 параметра, против 15 в браузере. В моем случае мне нужны все параметры.
Вы пробовали использовать curl для этой цели? например curl -v URL (curl httpbin.org/ip -v). Удивительно, что мы получаем меньше заголовков при вызове одного и того же url из двух разных источников. Не могли бы вы показать нам заголовки, которые вы получаете в браузере и node.js?
Я отправил запрос с помощью Postman и получил те же 11 параметров в заголовке ответа. Но мне нужно получить как минимум эти 11 параметров из кода, используя https node.js lib.
Я почти предлагаю зарегистрировать ошибку для этого, похоже, у вас есть воспроизводимый случай.
Вы пробовали использовать для этого библиотеку запросов в node.js? Вы получите такой же ответ.
Заголовки можно получить в модуле https.
Вот как вы получаете заголовки для ответа.
res.headers
Я обновил ваш код в примере ниже:
var req = https.request(options, function(res) {
res.setEncoding(ENCODING_UTF8);
res.on('data', function(result) {
console.info("Headers: ", res.headers);
// Your code here.
});
res.on('end', () => {
// Do something here.
});
});
Надеюсь это поможет.
Спасибо за ответ. Я пробовал использовать ваше решение, но получил только 4 параметра по сравнению с браузером Chrome, где я вижу 15 параметров (включая токен JWT). Также попробовал запрос с помощью Postman и получил те же 11 параметров в заголовке ответа. Но мне нужно получить один подходящий параметр (токен JWT), который я не могу получить с помощью https node.js lib.
Что именно вы хотите от заголовков?
Я хочу получить один необходимый параметр (токен JWT) из заголовка ответа, используя https node.js lib. Но я получаю 4 ненужных параметра в заголовке ответа, используя https node.js lib. Когда я использую Postman, я получаю все параметры, включая необходимый параметр (токен JWT). Как я могу получить все параметры или только один необходимый параметр (токен JWT) с помощью https node.js lib?
Как токен JWT в заголовке res? Он должен быть в заголовке запроса
Да, токен JWT также находится в заголовке запроса на передней стороне. Также в заголовке ответа помещается токен JWT на стороне сервера.
На мой взгляд, наилучшим возможным способом достижения целей было бы изменение функциональности серверной части, чтобы затем отправить тело токена.
Иногда серверной части необходимо автоматически обновить токен в случайное время и отправить его на передний план. Фронтенд должен сохранять и хранить токен при каждом вызове отдыха. Нет лучшего места, чем заголовки ответов. Добавление соответствующего токена к каждому внутреннему объекту, производящему json, не является идеальной практикой.
res.headersбудет содержать заголовки ответа.