我发现了一个奇怪的问题,即 urlencoding 的行为不一致。更新Spring MVC 4.3 和 5.1 版本之间存在差异:// FAIL in MVC 4.x @Testpublic void test2() { rt.getForObject("http://localhost/expr={expr}", String.class, "x/y"); Assert.assertEquals("http://localhost/expr=x%2Fy", savedUri.toString());}// FAIL in MVC 4 or 5@Testpublic void test3() { rt.getForObject("http://localhost/expr={expr}", String.class, "x+y"); Assert.assertEquals("http://localhost/expr=x%2By", savedUri.toString());}// ok in MVC 4.x, FAIL in MVC 5@Testpublic void test4() { rt.getForObject("http://localhost/expr={expr}", String.class, "x+y"); Assert.assertEquals("http://localhost/expr=x+y", savedUri.toString());}这可能是 Spring MVC 更大重构的一部分,因为它也出现在一个完全不同的地方问题详情以下独立测试最能说明我的问题。不要被ClientHttpRequestFactory- 重要的部分是最后 2 种测试方法所吓倒。发生了什么:除法符号/正确编码为%2F- test2() 通过添加符号+未编码为 a %2B- 它仍然存在+并且 test3() 失败应该发生什么:test3() 应该通过。+应编码为 %2B,因为它+是 URL 中的特殊字符,并且被许多服务器端 Web 框架解释为空白。这是怎么回事,是否有通用修复程序?
添加回答
举报
0/150
提交
取消