首页 > 解决方案 > 在 Sprint Boot thymeleaf 应用程序中,如何在不更改 URL 的情况下重定向?

问题描述

我有基于 Spring Boot 2.0 thyemeleaf/spring reactor 的网络应用程序。我在控制器中有这段代码:

Mono.just("redirect:/error/404");

如果不良用户输入无效的查询字符串参数,则会运行该程序。重定向工作正常,但 URL 更改为:

/error/404

而不是像这样保留原始用户输入的 URL

/home?gp=badvalue

如何在浏览器地址栏中保留原始 URL 的同时进行重定向?

请注意,此 Web 应用程序将在嵌入式 servlet 容器(在本例中为 Netty)中运行。

标签: spring-boot

解决方案


使用 redirect redirect:/error/404,服务器将响应 302 和 Location 标头中的新 URL;然后浏览器/客户端将对新 URL 发出另一个请求。

尝试使用转发:

return new ModelAndView("forward:/redirectedUrl", model);

转发完全发生在服务器端;Servlet 容器将相同的请求转发到目标 URL;URL 不会在浏览器中更改

参考这里


推荐阅读