node.js - Express SSL 重定向不适用于 root/

标签 node.js ssl express

我在 Express 路由声明的末尾使用通配符匹配来测试连接是否不是 HTTPS,如果不是,则重定向到 URI 的 HTTPS 版本。

这适用于除 root 之外的所有内容,即 www.domain.com。这有点问题,因为 domain.com 服务于 SPA。

app.get('*', function (req, res) {
        if (req.headers['X-forwarded-proto'] != 'https') {
            res.redirect('https://domain.com/#' + url_path);
        }
        else {
            res.redirect('/#' + url_path);
        }
});

我注意到,当 URL 是根域时,甚至不会调用这段代码。我想这可能是因为我也声明:

app.use(express.static(path.join(application_root, 'public')));

这是 SPA 为所有 Assets 提供服务所必需的。当我删除此行时,现在会为根域调用我的路由处理程序,但我的主页现在会无限重定向。

最佳答案

我必须创建一个自定义路由来为我的 SPA 文件提供服务,重命名 index.html 这样 Express 就不会尝试为它提供服务而不是我的路由。

关于node.js - Express SSL 重定向不适用于 root/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29540390/

相关文章:

jquery - 使用 Express、Node 和 JQuery 提交表单

javascript - 将 JavaScript 对象转换为数组以插入关系数据库

c# - Mono:非 SSL URI 上的 HttpWebRequest SSL 错误

使用 VirtualHosts 的 Apache 2 类型 SSl

javascript - Node.js 和 Jade

node.js - Mongoose 不保存循环中的所有文档

javascript - 使用连接键将 JS 子对象合并为 JS 对象

node.js - 安装 Ionic - 无法识别术语 'ionic'

html - nodejs https网站无法在IE11中显示

javascript - Connect-busboy : When piping file to write steam, 文件为空或不正确,具体取决于类型