我有一个URL缩短器,应该将sendRedirect(URL)发送到用户指定的URL。
有时URL包含大括号,如下所示:http://example.com?someparam={something}
。
而不是将响应302发送到客户端浏览器,我在Tomcat服务器上的Spring MVC应用程序给出错误404而没有文本。
显然它正在进行某种URL变量评估,我可以禁用它吗?我找不到有关此功能的文档。
答案 0 :(得分:2)
我知道这是一个老问题,但我认为OP正在寻找一种方法来阻止Spring在重定向URL中进行变量替换
我遇到了完全相同的问题,修复方法是使用RedirectView 在RedirectView中,您可以设置setExpandUriTemplateVariables(false)
这使得它重定向到完全没有Spring试图替换它中的任何内容的URL
这是代码的样子
RedirectView redirect = new RedirectView(redirectUrl);
redirect.setExpandUriTemplateVariables(false);
return new ModelAndView(redirect);
希望有所帮助
答案 1 :(得分:0)
这不是有效的Google搜索网址http://google.com/{something}
。应该是https://www.google.ca/search?q=http{302}
重点在于搜索?q 。在域名之后,您已指定服务名称,然后在要传递某些输入时查询字符串。
当您执行http://google.com/{something}
时,您实际上没有{something}
的任何资源或服务,因此404是预期的输出。
HTTP 302用于重定向,我不确定为什么你期望重定向。
网址编码也无济于事,因为问题与资源/服务有关,如果不存在,那么您将获得404.网址编码并不意味着解决与404相关的问题。