今日写代码时发现一个在jsp发起的get请求会报400错误,具体如下:
经检查发现是get请求中的参数target里带有特殊字符: \ 引起
故解决办法也很好解决,要么将参数里的特殊字符去除,要么将参数编码。
我采用编码方式。
在jsp里这样写:
<%
//传参前将target用加密工具将其编码为base64形式的字符串
String target = AESTool.encrypt(folder.getRelativePath(),SystemData.SYS_AES_KEY);
%>
<label class="custom-control-label" for="1">
<a href="http://localhost:8080/cloud/goIndex.do?target=<%=target %>">
这是超链接的标题
</a>
</label>
服务端接收到参数后这样写:
//服务端接收到参数后将其解码还原为带特殊字符的原始字符串
String target = AESTool.decrypt(target_enc, SystemData.SYS_AES_KEY);
我这里使用的编码方式是AES,效率上可能有所欠缺,希望更快的可以直接上base64。
------end-----------