java - Spring requestMapping 将 requestParam 中的 %2f 作为斜杠 (/)
问题描述
令牌是从第三方服务生成的。
有时这些标记%2F
包括0Tqn66huZhfX%2Fft7nPnCj1Id
我正在为这项服务编写一个包装器并使用弹簧休息。
当我将其中的令牌发送%2F
到弹簧控制器时,@RequestParam
它被视为%2F
字符/
,
0Tqn66huZhfX%2Fft7nPnCj1Id
变成0Tqn66huZhfX/ft7nPnCj1Id
.
我必须将此令牌发送到另一台服务器,如下所示。
http://example.com/ {token}/{otherVariable}
随着 spring%2F
变成 as /
,它打破了 url 格式。
我可以做些什么来获得令牌值%2F
而不将其转换为/
?
解决方案
浏览器将根据使用的字符集对 URL 进行编码。我们可以通过使用JS...等来防止。
解决方案:在发送请求之前使用:
in JS: use encodeURI(url)
, 这个函数对特殊字符进行编码,except: , / ? : @ & = + $ #
供解码使用:decodeURI(url)
推荐阅读
- byte-buddy - bytebuddy 无法检测 threadPoolExecutor
- python - 编写代码以从文件中读取命令 - 使用 Python 理解标记样式字符串
- python-3.x - if/elif/else 语句 - 似乎无法获得所需的输出
- javascript - 用javascript切换复选框
- shieldui - 创建列表框或组合框的多列下拉部分
- google-apps-script - 在 Google Apps 脚本的 makeCopy() 上找不到具有给定 ID 的项目
- typescript - 与空对象联合导致类型擦除
- javascript - 如何使用 jQuery 调整 DIV 行的大小
- java - Java:anObject?.property 是什么意思?
- javascript - 如何使用 mocha chai 和酶对道具的状态进行单元测试?