Невозможно использовать библиотеку запросов с заголовками - PullRequest
1 голос
/ 29 мая 2020

Используя инструменты Chrome dev, я могу видеть все сделанные запросы. Я хочу воспроизвести один из них с помощью скрипта. Запрос можно воспроизвести, так как его можно воспроизвести из инструментов разработки. Я использую этот код:

let request = require("request");
request.put("<hidden>", {
    "headers": {
        ":authority": "<hidden>",
        ":method": "PUT",
        ":path": "/api/<hidden>",
        ":scheme": "https",
        "accept": "*/*",
        "accept-encoding": "gzip, deflate, br",
        "accept-language": "en-US",
        "authorization": "<hidden>",
        "content-length": "0",
        // and more
    }
}, (err, response, body) => {
    console.log(err);
    console.log(response.statusCode);
    console.log(body);
});

На консоли отображается:

TypeError [ERR_INVALID_HTTP_TOKEN]: Header name must be a valid HTTP token [":authority"]
    at ClientRequest.setHeader (_http_outgoing.js:487:3)
    at new ClientRequest (_http_client.js:221:14)
    at Object.request (https.js:309:10)
    at Object.request (C:\Users\Admin\AppData\Roaming\npm\node_modules\puppeteer-core\node_modules\agent-base\patch-core.js:25:22)
    at Request.start (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:751:32)
    at Request.end (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:1505:10)
    at end (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:564:14)
    at Immediate._onImmediate (C:\Users\Admin\AppData\Roaming\npm\node_modules\request\request.js:578:7)
    at processImmediate (internal/timers.js:439:21) {
  code: 'ERR_INVALID_HTTP_TOKEN'
}

Я пробовал не использовать .put() или указывать свойства method и body. Те же результаты.

1 Ответ

0 голосов
/ 29 мая 2020

Заголовки, начинающиеся с двоеточия, являются «псевдозаголовками». На самом деле вы не отправляете их сами с библиотекой request(), поскольку они являются недопустимым форматом заголовка http 1.1.

О них можно прочитать здесь: Назначение полей псевдодетолётного заголовка .

Вы должны иметь возможность удалить все псевдозаголовки и просто убедиться, что информация в них правильно указана в другом месте вашего запроса (URL-адрес, метод и т. Д. c ...), что они обычно уже быть.

...