Подскажите , как можно отправить http2 запрос на сервер, используя лишь модуль tls ?
При отправке запроса через curl с сервера приходит обычный ответ
curl --location --http2 --request GET 'https://twitter.com'
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
...
Но когда я пробую отправить запрос через tls - я не получаю никакого ответа / непонятный набор байт
Вот мой код для отправки запроса:
const tls = require('tls');
const {constants} = require("crypto");
// Define options for the TLS connection
const options = {
host: 'twitter.com',
port: 443,
ALPNProtocols: ['h2'], // Enable HTTP/2
ciphers: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA',
secureProtocol: ['TLSv1_2_method', 'TLSv1_3_method', 'SSL_OP_NO_SSLv3', 'SSL_OP_NO_SSLv2'],
secure: true,
requestCert: true,
honorCipherOrder: true,
secureOptions: constants.SSL_OP_NO_SSLv3,
rejectUnauthorized: false,
};
// Establish the TLS connection
const socket = tls.connect(options, () => {
console.log('TLS connection established');
// Send the HTTP/2 GET request
const request = [
'GET / HTTP/2.0',
'host: twitter.com',
'',
''
].join('\r\n');
socket.write(request);
});
let response = '';
socket.on('data', (data) => {
response += data;
});
socket.on('end', () => {
console.log('Response from server:');
console.log(response);
});
Как можно решить данную проблему и получить "нормальный" ответ от сервера ?