我使用此代码段将每个http-request
转发给https-request
:
app.get('*', function (req, res, next) {
if (req.headers['x-forwarded-proto'] != 'https') {
res.redirect(req.connection.remoteAddress);
}
else {
next();
}
})
如果您输入example.com
,则会转到https://example.com/
,这很好。
但如果您输入http://example.com/someparam
,请转到http://example.com/::ffff:10.45.53.139
。
这很奇怪,因为如果你直接在浏览器中输入https://example.com/someparam
就行了。
从后端我得到xyz.herokuapp.com
的代码,但是如果我输入xyz.herokuapp.com
,它也会得到一个奇怪的结果http://xyz.herokuapp.com/::ffff:10.45.79.55
。
但使用此https://xyz.herokuapp.com/
有效......
好像重定向两次吧?!
答案 0 :(得分:0)
我认为req.connection.remoteAddress
指的是请求来自的IP地址 - 因此您不希望重定向到该地址。我假设您希望在保留路径的同时使用https重定向到您自己的域。这应该重定向并保留路径:
if(req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect('https://' + req.get('host') + req.originalUrl);
}