我正在尝试使用node.js创建一个HTTPS服务器,并在Create HTTPS server with node js之后创建了一个并使用它来创建我的密钥和证书。
但是,当我运行我的代码并尝试加载localhost:8080
时,页面将永远加载,页面最终会显示
No data received
ERR_EMPTY_RESPONSE
如果我使用HTTP,页面加载正常。这是我创建服务器的代码:
var https = require('https')
var fs = require('fs');
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('key-cert.pem')
};
var server = https.createServer(options, function(req, res) {
res.setHeader('Content-Type', 'application/json');
...
)};
server.listen(8080);
我想知道为什么这不起作用以及如何解决这个问题?谢谢!
答案 0 :(得分:0)
根据您显示的代码,您的请求超时(并且没有显示)的原因似乎是因为您实际上并未将任何内容写入页面。你在那里得到var https = require('https')
var fs = require('fs');
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('key-cert.pem')
};
var server = https.createServer(options, function(req, res) {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({hello: "world"}));
)};
server.listen(8080);
(这可能意味着你有更多的代码可以做到)但如果没有,请尝试:
[[ $str =~ _[0-9]{8}$ ]]
答案 1 :(得分:0)
我不确定我是否完全理解你所说的计划缺失了。我在浏览器中输入localhost:8080,当我使用HTTP而不是HTTPS
时,它可以正常工作
网址必须有一个方案。如果您没有输入方案,浏览器会假定您要使用HTTP并为您添加http://
。 (遗憾的是,现代浏览器很快就不会在地址栏中显示它。)
因此,通过键入localhost:8080
,您访问http://localhost:8080
并且无法正常工作,因为侦听该端口的服务正在运行SSL,而不是HTTP。
您需要输入https://localhost:8080
。