gpt4 book ai didi

express - 从发布请求重定向到新页面(服务器端)

转载 作者:可可西里 更新时间:2023-11-01 17:04:21 27 4
gpt4 key购买 nike

我在 ${host}/api/graphql 有一个可通过 POST 访问的快速 graphql 端点。

在那条路线上,我有身份验证中间件,如果用户未登录,我想重定向到登录页面。

看起来有点像这样。

const authCheck = (req, res, next) => {

const referringUrl = req.get('referer');

try {
const token = req.cookies.Auth;

jwt.verify(token, process.env.AUTH_PRIVATE_KEY);

next();
} catch(err) {
res.redirect(302, `/login?redirect=${referringUrl}`);
}
}

起初我将它作为响应状态代码 307,它在 GET 请求上运行良好。浏览器按预期将页面更改为 referringUrl

但是对于 Post 请求,使用状态 307 会导致浏览器重定向使用 post 方法。很好,所以我切换到 302。现在它发送一个 get 请求,但实际上并没有改变浏览器中的 url。

如何从服务器端实现此功能?

提前致谢。

最佳答案

正如@regilero 所说,问题出在客户端。您的 GraphQl 服务器无法在浏览器中更改 url,因为 js 代码发出请求,而不是浏览器。

您可以捕获 30* 错误状态并在您的客户端代码上手动进行重定向。

如果您将 Apollo Client 用于 graphQl,则可以遵循本指南 https://www.apollographql.com/docs/react/features/error-handling/#network-errors

关于express - 从发布请求重定向到新页面(服务器端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com