计算机设置代理转发给nodejs服务,但nodejs并没有接收到

我在macos上将https安全网页代理打开,并设置地址为127.0.0.1端口号为8091,我使用nodejs的http.createServer创建服务并监听8091端口后,在https网页中进行访问,网页报错ERR_EMPTY_RESPONSE,nodejs中没有接受任何信息。但是我使用java ServerSocket serverSocket = new ServerSocket(8091); 后java可以监听到https的请求。这个是为什么?

以下是我的代理设置截图:

img


以下是我的nodejs代码:


const http = require('http');

// 创建一个HTTP服务器
const server = http.createServer((req, res) => {
    // 设置响应头
    res.writeHead(200, {'Content-Type': 'text/plain'});
    console.log(req)
    // 发送响应数据
    res.end('Hello World\n');
});
var port = 8091
// 监听端口
server.listen(port, () => {
    console.log(`Server running at ${port}`);
});

以下是我的java代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
    public static void main(String[] args) throws IOException {
        try {
            // 创建ServerSocket对象并监听端口
            ServerSocket serverSocket = new ServerSocket(8091);
            System.out.println("服务器已启动,等待客户端连接...");

            while (true) {
                // 监听客户端请求
                Socket socket = serverSocket.accept();
                System.out.println("客户端已连接");

                // 获取输入流,读取客户端发送的数据
                InputStream inputStream = socket.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                // 解析请求头
                String header = "";
                while ((line = reader.readLine()) != null) {
                    header += line + "\r\n";
                    if (line.isEmpty()) {
                        break;
                    }
                }
                System.out.println("请求头信息:\n" + header);

                // 解析请求体
                String body = "";
                char[] buffer = new char[1024];
                int length;
                while ((length = reader.read(buffer)) != -1) {
                    body += new String(buffer, 0, length);
                }
                System.out.println("请求体信息:\n" + body);

                // 关闭输入流和Socket
                reader.close();
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

目前我希望,我可以使用nodejs的方式,接受到https的通过代理转发过来的请求,以便后续的nodejs服务开发

java用的socket套接字对象,nodejs用的http模块,应该不一样,nodejs也用socket来实现试试,参考下面的文章

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632