所以我刚刚将我的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
,您可以将sslCert
和sslKey
作为选项传递给项目配置。
module.exports = require('marko-starter').projectConfig({
sslKey: fs.readFileSync('key.pem'),
sslCert: fs.readFileSync('cert.pem')
/* other config */
});