咖啡与喵 2023-06-20 09:09 采纳率: 100%
浏览 32
已结题

计算机设置代理转发给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服务开发

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 已采纳回答 6月20日
  • 创建了问题 6月20日

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)