无法使用node.js创建HTTPS服务器

时间:2015-08-20 17:43:14

标签: node.js https server

我正在尝试使用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);

我想知道为什么这不起作用以及如何解决这个问题?谢谢!

2 个答案:

答案 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