You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用调用REST API遇301重定向丢失请求数据求助

问题原因与解决办法

问题原因

  • 服务器路由规则触发重定向:多数后端框架(如Django、Flask)默认会对不带尾斜杠的请求路径返回301重定向,指向带尾斜杠的版本。在线测试工具可能自动补全了尾斜杠,因此未触发重定向;而Android客户端请求的是不带尾斜杠的/api/login,触发了服务器的重定向逻辑。
  • HTTP重定向的默认行为导致请求数据丢失:301重定向发生时,多数Android HTTP客户端(如OkHttp、Retrofit)默认会将原POST请求转为GET请求,原请求中的JSON请求体不会被携带到重定向后的请求中,因此最终返回的200状态码实际是无有效请求数据的响应。

解决办法

客户端侧调整

  • 直接修改请求URL为带尾斜杠的格式:将请求目标改为global.mypanel.host/api/login/,从根源避免触发服务器的重定向规则。
  • 适配HTTP客户端的重定向处理逻辑:如果使用OkHttp,可通过添加拦截器自定义重定向行为,确保重定向时保留原POST方法和请求体;如果使用Retrofit,在接口注解中明确指定带尾斜杠的路径(如@POST("/api/login/"))。

服务端侧调整

  • 修改路由配置取消尾斜杠重定向:在后端框架中关闭自动补全尾斜杠的功能,让/api/login和/api/login/指向同一处理逻辑且不返回301。例如Django中设置APPEND_SLASH = False,Flask中给路由添加strict_slashes=False参数。
  • 统一API路径格式:规范所有API端点的路径,要么全部带尾斜杠,要么全部不带,避免因路径格式不一致触发不必要的重定向。

内容的提问来源于stack exchange,提问作者Ian O'Neill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:57:20