使用SPDY在Express服务器上强制SSL

时间:2018-10-12 05:55:37

标签: express https http2

我正在尝试对使用Express 4.16.3和spdy来支持HTTP / 2的整个应用强制使用HTTPS。通过https URL方案可以导航,但是显然http不会发生重定向,因为没有记录调试消息。

const app = express();
const spdy = require('spdy');
app.use(function enforce_ssl(req, res, next)
{
    console.log(`${req.method} ${req.protocol}://${req.headers.host}${req.originalUrl}`);
    if(req.secure)
        next();
    else
        res.redirect(301, `https://${req.headers.host}${req.originalUrl}`);
});
<...>
const server = spdy.createServer(
{
    cert: fs.readFileSync(path.resolve(cwd, 'stub-cert.pem')),
    key: fs.readFileSync(path.resolve(cwd, 'stub-privkey.pem')),
}, app);
server.listen(port, (err) =>
{
    if(err)
    {
        console.error(err);
        process.exit(1);
    }
    else
        console.log(`Listening on port ${port}!`);
});
server.on('error', (err) => console.error(err));

通过“不安全”协议导航时,出现ERR_EMPTY_RESPONSE页。该如何解决?

0 个答案:

没有答案