HTTPS 节点服务器不返回网页



所以我刚刚将我的HTTP web应用程序转换为HTTPS。

所以我的server.js目前看起来像

const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello worldn");
}).listen(8080);

这是一个marko-js项目,我的server.js过去看起来像

require("./project").server({
httpPort: process.env.PORT || 8080 // Optional, but added here for demo purposes
}); 

现在,当我导航到我创建的各种网页(如localhost:8080/home(时,我只返回helloworld。我认为这是由于我在创建服务器方法中得到的响应。

我该如何按预期返回我的网页,或者是否有任何资源可以为我指明正确的方向?

这是您必须处理请求的代码:

https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello worldn");
}).listen(8080);

无论浏览器要求什么,您编写的代码始终以hello world响应。

如果你想用不同的东西回应,那么你需要注意req对象,看看浏览器在要求什么,并用合适的东西回应。

您已经了解了这个操作方法吗?https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/

http.createServer(function (req, res) {
fs.readFile(__dirname + req.url, function (err,data) {
if (err) {
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
res.writeHead(200);
res.end(data);
});
}).listen(8080);

它适用于http,但我认为您也可以尝试https

在公开服务器之前,只需阅读操作指南中的安全问题;(

我只返回了你好世界。我认为这是由于我在创建服务器方法中得到的响应。

如果您自己创建服务器,则负责将内容传递给响应。在你的情况下,你总是通过hello world。此示例显示了如何在创建自己的http服务器时专门渲染Marko。

要点是这样的。但是,如果您有多个页面,则需要根据req.url呈现不同的模板。

const page = require('./path/to/page.marko');
https.createServer(options, function (req, res) {
res.setHeader('Content-Type', 'text/html');
page.render({ data:123 }, res);
}).listen(8080);

但是,看起来您使用的是marko-starter项目。因此,对于这个项目,要启用https,您可以将sslCertsslKey作为选项传递给项目配置。

module.exports = require('marko-starter').projectConfig({
sslKey: fs.readFileSync('key.pem'),
sslCert: fs.readFileSync('cert.pem')
/* other config */
});

最新更新