【问题标题】:Next.js redirect from an API routeNext.js 从 API 路由重定向
【发布时间】:2021-12-09 04:29:16
【问题描述】:

我正在构建一个需要用户登录的后台应用程序。 我有 2 个外部 API:

  • API A:管理用户帐户和会话
  • API B:对另一个数据库执行 CRUD 操作(与用户数据库无关)

问题是,如果用户的会话无效,我不希望用户能够执行对 API B 的调用。所以我在 Next(pages/api 下)中添加了一些 API 端点,它们执行以下操作:

  1. 根据 API A 验证会话的有效性
  2. 如果会话有效:继续步骤3,如果不是:重定向到页面/login
  3. 调用 API B

如果会话有效,一切正常,但如果会话无效,则一切正常。

我试过了

res.redirect(307, '/login').end()

res.writeHead(307, { Location: '/login' }).end()

但它没有用。即使指定整个路径 (http://localhost:3000/login) 也会失败。我不明白的是,如果我直接从浏览器发出请求(GET http://localhost:3000/api/data),我会成功重定向到我的/login 页面。当我在 React 组件中使用 Axios 发出请求时,它不起作用。

知道如何解决这个问题吗?

【问题讨论】:

  • Axios 不会自动跟随 API 返回的重定向。您需要检查收到的响应,并根据返回的内容在客户端进行重定向。
  • 简单来说,AJAX 只会中继从服务器传回的信息。您需要手动处理如何处理这些信息。
  • 感谢@juliomalves 和 yqlim 的回答!

标签: javascript axios next.js


【解决方案1】:

正如 @juliomalves 和 @yqlim 解释的那样,我必须根据 API 的响应手动进行重定向。

【讨论】:

  • 嗨@Jules,你有没有机会通过根据响应手动重定向来伪代码?我在同一条船上;我已经通过身份验证,它到达了我的回调 api 路由,我得到了我想要的详细信息,但现在不确定如何重定向到页面
猜你喜欢
  • 2020-08-12
  • 2022-11-11
  • 2020-06-06
  • 2018-07-22
  • 2015-11-24
  • 2018-10-22
  • 1970-01-01
  • 2021-11-05
  • 2021-06-21
相关资源
最近更新 更多