...
发现访问的时候提示“HTTP Status 400 -错误的请求”,不传参打开是正常访问的,这个是为什么?
解决方案
经验证发现是由于tomcat中间件的问题导致,这应该是一个比较普通存在的问题。 经验证发现是由于tomcat中间件的问题导致,这是Tomcat较新版本默认开启的限制。
一、Tomcat出现版本
7.0.69+
8.0.39+
8.5.7+
...
最优解决方案:对于所有服务器传参带特殊符号或者中文的时候必须使用encodeURLComponent 进行编码(在java中对应为 java.net.URLEncoder.encode("...","UTF-8"),但实际中因为不同应用服务器编码不同,有可能使用encodeURLComponent 编码后服务器认为还是存在非法字符,这时候URL传参依然是不生效的,因此是不建议在URL中使用中文,对于带中文的传参建议使用post方式(具体可参考: post方式传参.html)或者Base64编码后传递paramsInfoBase64,具体可参考:)或者Base64编码后传递paramsInfoBase64,具体可参考:《从第三方系统中打开Smartbi资源 此文档中的 》 此文档中的 3、附件参数 部分:
补充方案:以下方案在部分版本Tomcat可以解决URL带中文和特殊字符传参的问题,如果添加后没有解决,就是这个Tomcat版本不支持这样的方式,请使用【最优解决方案所提供的建议】:
...