Узел JS https необработанный запрос отправлен через сокет неправильно сформирован - PullRequest
0 голосов
/ 10 апреля 2019

Я использую модуль https, присутствующий в NodeJS, для отправки необработанного HTTP-запроса после операции подключения. Используя пример, приведенный в документации по NodeJS, я извлек запрос RAW из fiddler и отправляю его, однако Google отправляет обратно Your client has issued a malformed or illegal request.

Запрос должен работать так, как он взят прямо из рабочего запроса на Fiddler, и использование модуля запроса с соответствующими заголовками определенно работает.

const options = {
  hostname: "google.com",
  port: 443,
  method: "CONNECT"
};

const req = https.request(options);
req.end();

req.on("connect", (res, socket, head) => {
  console.log("Socket connected");
  socket.write(
    "GET https://www.google.com/ HTTP/1.1\r\n" +
      "Host: www.google.com\r\n" +
      "Connection: keep-alive\r\n" +
      "Upgrade-Insecure-Requests: 1\r\n" +
      "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36\r\n" +
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3\r\n" +
      "Accept-Encoding: gzip, deflate, br\r\n" +
      "Accept-Language: en-US,en;q=0.9\r\n"
  );
  socket.on("data", chunk => {
    console.log(chunk.toString());
  });
  socket.on("end", () => {
    console.log("Socket was closed");
  });
});

Я ожидаю, что браузер получит нормальный ответ, однако я получаю следующее от Google.

<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>400.</b> <ins>That’s an error.</ins>
  <p>Your client has issued a malformed or illegal request.  <ins>That’s all we know.</ins>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...