gpt4 book ai didi

java - 如何使用 spring boot 抑制 url 编码

转载 作者:行者123 更新时间:2023-12-04 11:37:24 24 4
gpt4 key购买 nike

我使用 Spring boot 创建了一个 GET/POST API,它有一个 http url 参数,比如 refid。现在这个参数在调用 GET/POST 请求之前已经被编码
例如http://localhost:8080/users/TESTFNkJXiQAH%2FJBKxigBx

但是,当我通过 Spring Boot 部署它时,编码的 refid 会再次编码并且 refid 发生变化。即它变成:

http://localhost:8080/users/TESTFNkJXiQAH%252FJBKxigBx

我想通过 Spring Boot 抑制第二个编码。有人可以在这里建议吗?

最佳答案

不知道您是否仍然遇到这个问题,或者您是否找到了它发生的原因,但是因为我试图向某人解释这种现象,所以我查看了是否已经有一个很好的解释。但既然你也问了,我没有找到,这是我的答案。

所以你编码你的 refid

TESTFNkJXiQAH%2FJBKxigBx



在您通过 url 发送它之前,然后您将其提供给浏览器。现在这只是编码的 refid。当您直接通过 URL 调用它时,您必须根据 HTML URL 编码标准再次对其进行编码。这就是双重逃生的原因。另请阅读 this .例如。所以如果你的 refid 看起来像这样

test%123



你编码它,你把它变成

test%25123



现在,如果您还想通过浏览器上的 url 传递它,则必须再次对其进行编码。

test%2525123



但是如果服务 A 正在使用这个服务并且服务 A 正确地编码了这个 refid,那么你就不会遇到这个问题。发生这种情况只是因为您试图通过浏览器调用此 api 端点。

当然,我认为你这样做是理所当然的:
String decoded = URLDecoder.decode(refid, "UTF-8");

在你的 Controller 中

关于java - 如何使用 spring boot 抑制 url 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40348836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com