node.js - Express 请求对象未正确报告 https

标签 node.js express

我正在尝试将我网站的用户自动重定向到 https,但为了做到这一点,我需要知道他们是否已经通过 https 访问,否则我会进入无限重定向循环。

通过搜索,我尝试查看这些值

console.log('!!!!!!!!!ROUTING TO REDUX!!!!!!!!', request.secure, request.protocol, request.get('X-Forwarded-Protocol'));

但我看到这已被记录

2017-06-23T07:20:10.996750+00:00 app[web.1]: !!!!!!!!!ROUTING TO REDUX!!!!!!!! false http undefined

2017-06-23T07:20:11.028280+00:00 heroku[router]: at=info method=GET path="/" host=my-library-io.herokuapp.com request_id=3fc84fae-02bd-443a-8265-c45def605ba1 fwd="64.134.226.42" dyno=web.1 connect=0ms service=33ms status=200 bytes=2309 protocol=https

即使在查看 https 时也是如此。

网站在这里https://mylibrary.io/原始 Heroku 网址在这里 https://my-library-io.herokuapp.com/

两个 URL 都会加载,并在我的浏览器中显示为安全,但通过上面的第二个条目,两个 URL 也都显示为 https 日志;但无论是哪种情况,我都无法查看请求对象中的任何内容来推测我正在通过 https 查看。

最佳答案

使用request.get('X-Forwarded-Proto') ,而不是X-Forwarded-Protocol。正如你所看到的,它被 npm 包 heroku-ssl-redirect 使用。 。这个事实上的标准 HTTP header 也是 documented on Wikipedia .

关于node.js - Express 请求对象未正确报告 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44723727/

相关文章:

javascript - Node passport-local 策略总是失败

node.js - NodeJS 的 PhantomJS 桥 : paperSize do not work correctly

node.js - Webpack 开发服务器到 Node/IIS

javascript - 带有 Express 和 Handlebars 的 NodeJs -handlebars.engine 未定义

node.js - 无法从 Ubuntu 上的 NodeJS 连接到 MongoDB。 OSX 上的相同代码可以正常工作

json - Firebase 安全规则?

node.js - 如何在模块之间共享同一个变量?

javascript - 不同域之间共享数据

javascript - 从 express 中间件访问数据

javascript - Express.js 路由。如何将默认路由放在所有现有路由之前