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

Golang向Spring Boot发起重定向后请求重复问题求助

重定向链路中的重复请求异常

场景描述

我在实现「Golang应用→Spring Boot控制器→Golang指定端点」的两次重定向链路时,遇到了异常:Golang发起5次重定向,但Spring Boot端收到了10次请求,每个请求的counter值都重复出现两次。

代码片段

Golang重定向代码

u.counter++ // 初始值为0,每次重定向前自增
u.logger.Printf("sending redirect number: "+strconv.Itoa(u.counter))
http.Redirect(w, r, "http://myspringboot.app/api/mycontroller?param=" + param + "&counter=" + strconv.Itoa(u.counter), 302)

Spring Boot控制器代码

@GetMapping("/mycontroller")
public void getRedirect(
        HttpServletResponse httpServletResponse,
        @RequestParam("param") String param,
        @RequestParam("counter") String counter
) {
    System.out.println("param: " + param + " counter: " + counter);
    httpServletResponse.setHeader("Location", "https://mygolang.app/endpoint?param=" + param);
    httpServletResponse.setStatus(302);
}

日志现象

  • Golang端日志(正常输出5次):
sending redirect number: 1
sending redirect number: 2
sending redirect number: 3
sending redirect number: 4
sending redirect number: 5
  • Spring Boot端日志(收到10次重复请求):
param: somevalue counter: 1
param: somevalue counter: 2
param: somevalue counter: 1
param: somevalue counter: 2
param: somevalue counter: 3
param: somevalue counter: 3
param: somevalue counter: 4
param: somevalue counter: 4
param: somevalue counter: 5
param: somevalue counter: 5

关键排查线索

如果移除Spring Boot控制器中的以下两行重定向代码:

httpServletResponse.setHeader("Location", "https://mygolang.app/endpoint?param=" + param);
httpServletResponse.setStatus(302);

Spring Boot控制器就能正常收到5次请求,无重复情况。

环境信息

  • 两个应用均部署在AWS ECS,各分配独立任务
  • Golang应用使用HTTPS协议,Spring Boot最初用HTTP,添加ACM证书后问题仍存在
  • 浏览器表现:Chrome中必现重复请求,Edge中重复次数不定
  • 额外说明:Golang的/endpoint端点与发起重定向的HTTP处理器完全独立

有没有人遇到过类似的问题?


内容的提问来源于stack exchange,提问作者mangusta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:43:25