Node.js返回HTTPS的空响应
我有以下非常基本的Node.js服务器:Node.js返回HTTPS的空响应,node.js,Node.js,我有以下非常基本的Node.js服务器: "use strict"; const http = require("http"); const https = require("https"); const fs = require("fs"); http.createServer((req, res) => { console.log("regular works"); res.end("Regular response"); }).listen(300
"use strict";
const http = require("http");
const https = require("https");
const fs = require("fs");
http.createServer((req, res) => {
console.log("regular works");
res.end("Regular response");
}).listen(3000);
https.createServer({
key: fs.readFileSync("/etc/letsencrypt/live/domain.com/privkey.pem"),
cert: fs.readFileSync("/etc/letsencrypt/live/domain.com/cert.pem")
}, (req, res) => {
console.log("secure works");
res.end("Secure response");
}).listen(3001);
我以sudo node filename.js
的形式运行它,这仅仅是因为/etc/letsencrypt/live
中的文件仅为根文件。我稍后会正确地执行此操作,这仅用于测试
运行时,我可以很好地到达端口3000。服务器控制台打印常规工作
,浏览器显示常规响应
。但是,端口3001返回一个空响应,并且不会向服务器打印任何消息
LetsEncrypt文件是通过/LetsEncrypt auto certonly--standalone-d domain.com--email生成的email@gmail.com--同意tos
并显示为有效
我错过了什么才能获得预期的结果?这里有两个问题:
- 假设您没有隐藏真正的主机名/IP,那么应该使用127.0.0.1或类似的(如果您在同一台计算机上)而不是255.255.255.255
- HTTP是cURL的默认值,因此您当前正在向HTTPS服务器发送一个明文HTTP请求,但该请求不起作用(HTTPS服务器将文本HTTP请求视为无效的TLS握手,导致连接突然结束)。为了解决这个问题,请明确包括
(例如https://
)curl-I——详细https://127.0.0.1:3001
服务器。setSecure
不再是一个函数,而且Express guide也不起作用了-给我相同的结果。对不起,我应该指定-我在原始文件中模糊了主机名。我尝试了使用https的curl,获得了一些新信息。非常感谢。好的,看来您的服务器现在工作正常。如果您希望在cURL中看到“安全响应”输出,那么在HEAD
请求中就看不到它(这是正确的)。使用GET
请求来查看响应主体。我想这一切都取决于我对curl的了解程度。。。谢谢你的帮助!