RTK Query不跟随重定向问题:隧道请求返回303状态码
问题分析与修复方案
开发环境通过隧道转发请求到认证提供商API时,Axios请求返回200正常,但迁移到RTK Query的API切片后,使用hooks调用却得到303状态码,即使已在base query中配置redirect: 'follow'仍未解决。
可能的原因及修复步骤
显式传递redirect配置到请求
当使用fetchWithBQ发送完整URL的请求时,baseQuery中的redirect配置可能未被自动继承。需要在每个请求中显式指定该选项:if (arg.flowId) { result = await fetchWithBQ({ url: `${oryBaseUrl}/self-service/settings/flows/?id=${arg.flowId}`, redirect: 'follow', credentials: 'include' }) } else { result = await fetchWithBQ({ url: `${oryBaseUrl}/self-service/settings/browser`, redirect: 'follow', credentials: 'include' }) }修正queryFn的返回结构
当前代码将整个fetch结果对象作为返回数据,不符合RTK Query的预期格式,可能引发内部处理异常。应直接返回响应体数据:return result.error ? { error: result.error } : { data: result.data }验证跨域凭证传递
- 确保
credentials: 'include'在所有请求中生效,包括fetchWithBQ的调用 - 确认认证提供商API已配置
Access-Control-Allow-Credentials: true,且Access-Control-Allow-Origin设置为前端页面的具体域名(不能是*)
- 确保
排查303重定向目标
在浏览器开发者工具的网络面板中查看303响应的Location头,确认重定向地址。若跳转到认证路由,需对比Axios和RTK请求的Cookie头,检查会话凭证是否正确携带。
内容的提问来源于stack exchange,提问作者Spencer
相关产品推荐
相关产品推荐

