如何在nodeexpress中从后端(port:3001)路由重定向到前端(port: 3000)?

问题描述 投票:0回答:1

我的所有后端API都定义在3001端口,我想重定向到3000端口的前端路由。有什么方法可以做到这一点吗?

我知道我可以简单地做如下操作

router.get(
  "/steam/return",
  passport.authenticate("steam", {
    failureRedirect: "/",
    session: true,
  }),
  function (req, res) {
    return res.redirect("http://localhost:3000");
  }
);

但假设我将此部署到Heroku,Heroku会生成自己的唯一域,我将如何 "动态 "地将前端路由传递给应用程序?

假设Heroku生成 some-domain.herokuapp.com 那么我想重定向到该域。但与此同时,在我的开发过程中,我想重定向到那个域名。http://localhost:3000.

javascript node.js reactjs express passport.js
1个回答
0
投票

根据反馈的情况 ArchNoob 我可以通过检查 process.env.NODE_ENV. 当项目部署到heroku时,这个环境变量被设置为生产,heroku默认这样做。

然后,在我的护照策略中,我做了。

// port 3443 is for my api routes
const returnURLString =
    process.env.NODE_ENV === "production"
      ? "https://my-app.herokuapp.com/api/auth/steam/return"
      : "http://localhost:3443/api/auth/steam/return";

  const realmString =
    process.env.NODE_ENV === "production"
      ? "https://my-app.herokuapp.com/"
      : "http://localhost:3443/";
  passport.use(
    new SteamStrategy(
      {
        returnURL: returnURLString,
        realm: realmString,
        apiKey: myAPIKey,
      },
  ...

在我的API返回路径中,我做了:

router.get(
  "/steam/return",
  passport.authenticate("steam", {
    failureRedirect: "/",
    session: true,
  }),
  function (req, res) {
    const env = process.env.NODE_ENV || "dev";
    if (env === "production") {
      return res.redirect("https://my-app.herokuapp.com/");
    } else {
      return res.redirect("http://localhost:3000");
    }
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.