Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 重定向您的次数太多-Heroku上的Express/node_Node.js_Reactjs_Express_Heroku - Fatal编程技术网

Node.js 重定向您的次数太多-Heroku上的Express/node

Node.js 重定向您的次数太多-Heroku上的Express/node,node.js,reactjs,express,heroku,Node.js,Reactjs,Express,Heroku,在Heroku上使用Express/node时,我遇到一个错误:在控制台中重定向您的次数过多或net::ERR_过多_重定向 我是Express新手,我尝试添加重定向,以便将两个自定义域上的所有http请求重定向到https。这就是破坏网站的原因。如果有任何想法来解决它,那将是惊人的 var express = require('express'); const path = require('path'); var app = express(); // process.env.PORT

在Heroku上使用Express/node时,我遇到一个错误:在控制台中重定向您的次数过多或net::ERR_过多_重定向

我是Express新手,我尝试添加重定向,以便将两个自定义域上的所有http请求重定向到https。这就是破坏网站的原因。如果有任何想法来解决它,那将是惊人的

var express = require('express');
const path = require('path');

var app = express();

// process.env.PORT gets the port for Heroku or goes to 3000
const PORT = process.env.PORT || 3000;

app.enable('trust proxy');

// in production on Heroku - re-route everything to https
if (process.env.NODE_ENV==="production") {
  app.use((req, res, next) => {
    if (req.header['x-forwarded-proto'] !== 'https') {
      res.redirect('https://' + req.hostname + req.url);
    } else {
      next()
    }
  })
}

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

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'public/index.html'));
});

app.listen(PORT, function() {
  console.log('Express server is up on port:' + PORT);
});
改用
req.header('x-forwarded-proto')


为了确保这一点,可以使用console.log
process.env.NODE_env
req.header('x-forwarded-proto')
req.hostname
req.url
查看重定向是否按预期工作

FWIW,如果您使用
app.enable('trust proxy')
然后您可以只使用
req.protocol
而不是手动检查
'x-forwarded-proto'
req.protocol
应该在任何一种情况下都能工作(有或没有“信任代理”)。谢谢ZeroCho-我现在觉得自己很愚蠢。那真是太棒了!