You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenSSL自签名证书的Express HTTPS服务器请求无限挂起

HTTPS服务器请求无限加载问题排查

问题现象

使用OpenSSL自签证书搭建的HTTPS服务器可正常启动,但向https://localhost:3001发起请求时,浏览器及Postman均无限加载,Postman最终报错Error: socket hang up;服务器代码仅完成了HTTPS服务的初始化配置,未编写请求处理逻辑。

核心原因与解决方法

  • 缺少请求响应逻辑:
    Node.js的HTTPS服务器必须在createServer的回调中处理请求并返回响应,否则客户端会一直等待服务器回复,最终触发连接断开。补全请求处理代码:

    const https = require('https');
    const fs = require('fs');
    
    const serverOptions = {
      key: fs.readFileSync('./private-key.pem'), // 替换为你的私钥实际路径
      cert: fs.readFileSync('./certificate.pem') // 替换为你的证书实际路径
    };
    
    // 添加请求处理回调,主动返回响应
    https.createServer(serverOptions, (req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('HTTPS server is working');
    }).listen(3001, () => {
      console.log('Server running on https://localhost:3001');
    });
    
  • 证书配置验证:
    确认私钥和证书文件路径正确、文件未损坏,且均为PEM格式。若格式不符可重新生成:

    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
    
  • 端口与防火墙检查:
    用命令确认3001端口未被其他进程占用:

    • Mac/Linux:lsof -i :3001
    • Windows:netstat -ano | findstr :3001
      同时确保本地防火墙未拦截3001端口的入站请求。
  • 证书信任处理:
    自签证书默认不被信任,虽不会直接导致无限加载,但可能引发异常:

    • 浏览器访问https://localhost:3001,在安全提示中选择“高级”->“继续访问”以信任证书
    • Postman中关闭SSL验证:进入设置页面,关闭“SSL certificate verification”选项

内容的提问来源于stack exchange,提问作者Jeremy Kung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:41:19