Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js返回HTTPS的空响应_Node.js - Fatal编程技术网

Node.js返回HTTPS的空响应

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

我有以下非常基本的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(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


需要检查URL是否包含https://not http://

以及响应头。请参阅。@Gothdo不幸的是
服务器。setSecure
不再是一个函数,而且Express guide也不起作用了-给我相同的结果。对不起,我应该指定-我在原始文件中模糊了主机名。我尝试了使用https的curl,获得了一些新信息。非常感谢。好的,看来您的服务器现在工作正常。如果您希望在cURL中看到“安全响应”输出,那么在
HEAD
请求中就看不到它(这是正确的)。使用
GET
请求来查看响应主体。我想这一切都取决于我对curl的了解程度。。。谢谢你的帮助!