【发布时间】:2020-04-10 21:34:24
【问题描述】:
当我传递精确值时,我创建了一个带有参数@Requestparam String Id 的java 服务,当我尝试传递加密值时它工作正常,它不能正常工作。我在下面给出了我的工作。
@GetMapping("fetch")
@Produces(value = "application/json")
@ApiOperation("Get user detail from Okta")
public ResponseEntity<UserInfoRespone> getUserDetailsFromOkta(@RequestParam String agentId) {
System.out.println("Actual:" +"c4njCC2/reRud+O/I41w3w==");
System.out.println("Incoming agent Id:" + agentId);
}
当我使用邮递员调用服务时传递了加密值 c4njCC2/reRud+O/I41w3w== 但是当我尝试打印传入的代理 ID 时,我发现实际中缺少几个字符文本看起来像 c4njCC2/reRud O/I41w3w== 它错过了 + 符号并为其自身添加了空间。所以当我试图解密字符串时,它会变成空值。
Expected : c4njCC2/reRud+O/I41w3w==
Actual : c4njCC2/reRud O/I41w3w==
有人可以帮我解决这个问题吗?
【问题讨论】:
-
问题是 HTTP URL 编码。
-
编码和加密有很大区别。
-
在请求参数中,
+对空格进行编码,要么您需要使用 URL 安全的 Base64 编码,要么您需要使用%2B转义+。
标签: java spring-boot