GET接口的url数据中含反斜杠,接口404解决方案 |
您所在的位置:网站首页 › get请求编码 › GET接口的url数据中含反斜杠,接口404解决方案 |
项目背景: 前端用VUE框架请求数据,后端用java spring boot开发。前后端参数传递取数据的时候,有一个参数内容中包含了反斜杠,对该参数进行了编码解码后,本地调试前端系统能正常拿到数据,但是部署到nginx服务器,进入生产环境,就拿不到数据了。 问题原因: url中传输的数据包含反斜杠时,nginx会将数据分割,误认为反斜杠是url的分隔符 解决思路: 前端二次编码+后端二次解码
前端修改: 前端使用encode编码后将%2f替换为%252f var str = encodeURIComponent(pointid); str = str.replace('%2F', '%252f'); // 注意这个代码只会替换第一个字符串 str = str.replace(/%2f/gi,"%252F"); // 这个代码可以忽略大小写,替换所有字符串
后端修改: 后端使用decode二次解码:%252f第一次解码后为%2f,再将%2f解码为 /
demo: @ApiOperation(value = "testKey") @ApiImplicitParams({ @ApiImplicitParam(name = "key",value = "key",required = true) }) @GetMapping(value = "/{key}/test") @ResponseBody public String selectBykey(@PathVariable("key") String key) throws IOException { System.out.println(key); String result = URLDecoder.decode(key,"UTF-8"); System.out.println(result); if("1".equals(result)){ System.out.println(key); return "111"; }else if(result.equals("1/2")){ System.out.println("1/2"); return "1111xiegang2"; } return ""; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |