如何防止Java 8 / Tomcat 7对Response.sendRedirect上的URL路径进行URL编码

问题描述 投票:6回答:1

我有一个完全本地化的网站,在URL路径中有一些字符,通过Response.sendTemporaryRedirect方法获得HTML编码:

String toReturn = /*StringEscapeUtils.unescapeHtml4(redirect)*/ redirect + "?" + URLEncoder.encode(json, "UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=UTF-8");

java.net.URI location = new java.net.URI(toReturn);
return Response.temporaryRedirect(location).build();

重定向正在获得404,因为"%C3%B1%C3%AD" URL片段被误解了。解码,它看起来像这样:ñí

我在重定向之前尝试过URLDecoder.decode(url, 'UTF-8')StringEscapeUtils.escapeHtml4而没有运气。代码工作正常。

为什么javax.ws.rs.core.Response.sendTemporaryRedirect URLEncoding URL路径?

java redirect java-8 tomcat7 url-encoding
1个回答
0
投票

只需将“Location”响应标头设置为您想要的字符串即可。当核心api就在那里时,看到人们与图书馆作战,这让我非常恼火。

© www.soinside.com 2019 - 2024. All rights reserved.