繁体   English   中英

Nodejs Express https 到 http 重定向不起作用

[英]Nodejs Express https to http redirect not working

我在我的 Nodejs 服务器上安装了 SSL 证书。

const fs = require('fs');
const https = require('https');
const app = require('express');

https.createServer({
    key: fs.readFileSync('./ssl/private.key'),
    ca:fs.readFileSync('./ssl/ca_bundle.crt'),
    cert: fs.readFileSync('./ssl/certificate.crt')
}, app).listen(443);

端口 443 是 https 的默认监听端口,端口 8080 是 http 的默认监听端口。 我的服务器工作正常,我可以通过https://www.example.net访问我的网站。 但是,如果我删除 https 或将其替换为 http,我希望我的服务器自动重定向到https ,所以我添加了:

app.use (function (req, res, next) {
    if (req.secure) {
            // request was via https, so do no special handling
            console.log(`Secure request`)
            next();
    } else {
            // request was via http, so redirect to https
            console.log(`Unsecure request`)
            res.redirect('https://' + req.headers.host + req.url);
    }
});

我仍然可以使用 https 连接文件,但如果我删除它,我会得到:

> dial tcp 312.312.d12.213:80: connectex: A connection attempt failed
> because the connected party did not properly respond after a period of
> time, or established connection failed because connected host has
> failed to respond.

我不得不添加

http.createServer(app).listen(80);

这样它也可以监听不安全的请求

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM