我尝试将我网站的用户自动重定向到https,但为了做到这一点,我需要知道他们是否已经通过https访问,否则我和#39;进入无限重定向循环。
从搜索开始,我已经尝试过查看这些值
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 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/
这两个网址都会加载,并在我的浏览器中显示为安全,但两者也会通过上面的第二个条目显示为https;但要么我无法查看请求对象中的任何内容,以推测我通过https查看。
答案 0 :(得分:1)
使用request.get('X-Forwarded-Proto')
,而不是X-Forwarded-Protocol
。如您所见,它由npm包heroku-ssl-redirect
使用。此事实上的标准HTTP标头也是documented on Wikipedia。