最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

是否可以在Express ReactJS应用程序中一起使用res.sendFile()和res.redirect()?

IT培训 admin 10浏览 0评论

是否可以在Express ReactJS应用程序中一起使用res.sendFile()和res.redirect()?

我正在研究ReactJS / ExpressJS应用程序并实现了SSR。现在我遇到了一个问题,我想将网站的每条路线都重定向到www。我已经在发送静态文件,也想重定向每条路由。

这是我的代码:

app.all('/*', function(req, res, next) {
  if (req.headers.host.match(/^www/) !== null ) {
    const filePath = path.resolve(__dirname, '../build', 'index.html');
    res.sendFile(filePath);
  } else {
    res.redirect('/'+ req.url);
    const filePath = path.resolve(__dirname, '../build', 'index.html');
    res.sendFile(filePath);
  }
})

但是它不起作用,如果有人帮助我,我将不胜感激。

谢谢!

回答如下:

是否可以在Express ReactJS应用程序中同时使用re.sendFile()和res.redirect()?

不,你不能那样做。您只能发送一个对请求的响应。因此,您必须选择res.redirect()res.sendFile()。您不能同时发送。如果您尝试同时发送两者,则第一个是发送到客户端的响应,第二个将被Express忽略。

仅供参考,重定向的整个想法是,客户端将随后从您的服务器请求该新网址,然后您将呈现与该新网址一起显示的页面。因此,发送重定向URL毫无意义,这将导致浏览器立即请求一个新URL,然后显示该页面并发送永远不会显示的内容。

如果您描述您的实际用例,也许我们可以为您提供一个更合适的解决方案的建议,但是直接回答您的问题,不,您不能同时发送两者。

是否可以在Express ReactJS应用程序中一起使用res.sendFile()和res.redirect()?

我正在研究ReactJS / ExpressJS应用程序并实现了SSR。现在我遇到了一个问题,我想将网站的每条路线都重定向到www。我已经在发送静态文件,也想重定向每条路由。

这是我的代码:

app.all('/*', function(req, res, next) {
  if (req.headers.host.match(/^www/) !== null ) {
    const filePath = path.resolve(__dirname, '../build', 'index.html');
    res.sendFile(filePath);
  } else {
    res.redirect('/'+ req.url);
    const filePath = path.resolve(__dirname, '../build', 'index.html');
    res.sendFile(filePath);
  }
})

但是它不起作用,如果有人帮助我,我将不胜感激。

谢谢!

回答如下:

是否可以在Express ReactJS应用程序中同时使用re.sendFile()和res.redirect()?

不,你不能那样做。您只能发送一个对请求的响应。因此,您必须选择res.redirect()res.sendFile()。您不能同时发送。如果您尝试同时发送两者,则第一个是发送到客户端的响应,第二个将被Express忽略。

仅供参考,重定向的整个想法是,客户端将随后从您的服务器请求该新网址,然后您将呈现与该新网址一起显示的页面。因此,发送重定向URL毫无意义,这将导致浏览器立即请求一个新URL,然后显示该页面并发送永远不会显示的内容。

如果您描述您的实际用例,也许我们可以为您提供一个更合适的解决方案的建议,但是直接回答您的问题,不,您不能同时发送两者。

发布评论

评论列表 (0)

  1. 暂无评论