Spring Boot中如何获取外部服务重定向的原始URL?
在Spring Boot中获取外部重定向的原始URL方法
当外部服务重定向到你的Spring Boot应用时,可通过以下两种方式获取原始重定向源URL:
1. 通过Referer请求头获取(浏览器重定向场景)
浏览器处理重定向请求时,会自动将原始重定向源URL放入Referer请求头中发送至目标地址。你可以在Controller里通过HttpServletRequest直接读取该请求头:
import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping("/test") public String getOriginalRedirectUrl(HttpServletRequest request) { String originalRedirectUrl = request.getHeader("Referer"); return "原始重定向URL: " + originalRedirectUrl; } }
注意:
Referer头是浏览器主动生成的,如果是后端服务直接发起的重定向(不经过浏览器),该请求头不会存在;另外部分浏览器或代理可能会移除该头,可靠性有限。
2. 通过自定义参数传递(高可靠场景)
如果业务上需要确保100%获取到原始URL,建议让外部服务在重定向时携带自定义查询参数或请求头:
- 示例:外部服务重定向地址为
http://localhost/test?originalUrl=http://example.com/redirect - 在Controller中读取该参数的代码如下:
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping("/test") public String getOriginalRedirectUrl(@RequestParam("originalUrl") String originalUrl) { return "原始重定向URL: " + originalUrl; } }
内容的提问来源于stack exchange,提问作者cookerfresh
相关产品推荐
相关产品推荐

