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

Spring Controller运行时传URL变量实现重定向问题排查

问题排查与解决方案

核心问题分析

  1. 无效的Controller实现:你写的@RequestMapping("/${rate.news_link}")完全错误,Spring无法解析注解中的Thymeleaf模板变量(${rate.news_link}),这个Controller的实际映射路径是字面量/${rate.news_link},不会匹配任何请求。而且外部链接根本不需要通过后端Controller重定向,直接在前端跳转即可。
  2. Thymeleaf URL语法误用:@{...}是Thymeleaf用于生成应用内上下文相关URL的语法(比如自动添加应用上下文路径),用它包裹完整外部URL时,可能触发不必要的URL重写逻辑,或结合目标网站的反爬规则,导致点击后跳转异常。

修复步骤

1. 删除无效Controller

直接移除你编写的重定向Controller,完全不需要后端处理外部链接跳转。

2. 修改Thymeleaf链接写法

将模板中新闻链接的th:href语法从@{${rate.news_link}}改为直接绑定变量:

<td>
    <a th:href="${rate.news_link}" th:text="${rate.HEADLINE}" target="_blank"/>
</td>
  • 去掉@{...}包裹,确保输出原始外部URL,避免Thymeleaf的URL重写干扰;
  • 添加target="_blank"让链接在新窗口打开,既不离开当前应用,也能避免目标网站因referer限制导致的跳转拦截(这很可能是点击后跳转到首页的直接原因)。

3. 验证URL格式

确保rate.news_link存储的是完整外部URL(包含http://或https://协议头),如果缺少协议头,浏览器会将其视为当前域名下的相对路径,导致跳转错误。

问题根源总结

  • 你编写的Controller完全误解了重定向场景:只有需要从应用内路径跳转到外部URL时才需要后端重定向,而你的需求是直接展示外部链接,无需后端中转;
  • @{...}语法用于应用内URL处理,强行包裹外部URL可能触发解析异常或目标网站的反爬机制,导致跳转异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:09:19