gpt4 book ai didi

node.js - 使用 nodejs 和 reactjs 强制 ssl

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:11 25 4
gpt4 key购买 nike

我对 nodejs 和 reactjs 的生产模式没有太多经验,今天我听说我应该强制 ssl。我做了一些谷歌搜索,看起来

function requireHTTPS(req, res, next) {
if (!req.secure && req.get('x-forwarded-proto') !== 'https' && process.env.NODE_ENV !== "development") {
return res.redirect('https://' + req.get('host') + req.url);
}
next();
}
app.use(requireHTTPS);

这种代码用于expressjs强制ssl。 (代码来自 lavamantis)

然后我做了一些关于使用 reactjs 强制 ssl 的研究,因为使用 res.redirect 和 react 并不是我以前听说过的事情。看来我应该在 package.json

中执行以下操作
 "scripts": {
"start": "set HTTPS=true&&react-scripts start",
...
}

那么当我在 nodejs 中使用 reactjs 时我应该怎么做?我还没有部署他们组合的单个应用程序,但我想什么时候我会使用 nginx

最佳答案

i am not willing to use ssl in development mode but i am talking about production

简化的场景如下所示:

  • 您在开发环境中进行开发,例如在笔记本电脑上。您不使用 SSL。你有一些安全敏感的 cookie 但 Express 并没有让它成为安全的,否则你的 React 应用程序的客户端(例如浏览器)将无法将它发送回 Express 以证明用户已经登录中。

  • 您已完成开发和测试,因此您现在正在从 React 应用程序和后端/Express 代码的开发版本切换到生产版本。您不使用 SSL。您完成了生产版本的测试。

  • 您添加了 Nginx 并测试了 React 应用程序可以使用 Nginx 作为反向代理访问 Express。您不使用 SSL。

  • 您生成一个自签名 SSL 证书并使用它来切换 Nginx 以:(a) 使用 SSL 和 (b) 终止 SSL 流量。 HTTP 端点不再公开,Nginx 不再接受 HTTP 连接。只有 HTTPS。您让客户端/浏览器信任这个自行生成的证书。您更改生产构建以生成仅安全的 cookie。您测试了 React 应用程序,它通过 Nginx 与 Express 一起工作。

  • 您从开发环境转移到生产环境,例如在云端或任何地方部署您的生产构建。您将自行生成的 SSL 证书替换为 CA 颁发的适当证书。收费或免费发行。您添加部署环境提供商提供的防火墙。防火墙可以选择性地终止 Nginx 的 SSL 流量。

关于node.js - 使用 nodejs 和 reactjs 强制 ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58354546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com