我正在使用expressjs创建一个http / https服务器。
有一种情况是服务器无法从目录中获取公共和私有证书文件。
在这种情况下,我使用http创建服务器并将原始HTML文件发送到客户端,表明存在问题,但这就是问题, 用户不知道他们需要转到 http 网址而不是 https 才能看到HTML文件。
因此,当我们尝试访问 http 网址时,我可以将用户重定向到 https 网址
init.js
try {
// options = get public and private certificate file
} catch(e) {
// accessError
}
if(accessError) {
server = http.createServer();
} else {
server = https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
});
);
}
server.listen(8080);
app.js
let app = require('express');
app.use((req, res, next) => {
if(accessError) {
res.sendFile(index.html);
} else {
next();
}
});
index.html
<h1> there was an error <h1>
答案 0 :(得分:0)
您可以在answer to this question中尝试301 Redirect
。
每当有人试图访问资源的http变体时,他们都会被重定向到https。
作为一项设计决策,我将无法检索证书视为致命错误。我想你会在开始的时候读它们。如果由于某种原因无法读取它们,则应该终止应用程序并记录异常。您做需要进行一些监控,以便注意到事情尚未启动并在您无法找到时采取相应措施。但显示错误页面似乎比它的价值更麻烦。您将该应用程序置于 up 状态,但实际上并非如此。因为它无法做任何事情,你需要依靠客户告诉你它不起作用,并且有相关的消息等等。最好是努力工作。