页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题现象

用户在第三方打开资源使用paramsInfo传参时,参数中带有中文或者特殊字符访问时,会出现报400错误导致无法访问。例如:http://10.10.4.8:18080/smartbi/vision/openresource.jsp?paramsInfo=[{"name":"月","value":"02","displayValue":"02"}]&resid=I297e39ed017cf851f8510d5e017d037344bf22ea&showtoolbar=true&refresh=true&user=admin&password=admin  访问报400错。

问题原因

问题原因是由于请求的URL在编码后的中文字符串带反斜杠,这是RFC文档中规定的不安全字符,Tomcat在高版本中增加的安全验证,凡是RFC 3986中非URL可携带的字符,都会返回400错误。

解决方案

       1、首先将url中的paramsInfo传参时的中文参数进行Unicode(访问 Unicode编码转换的地址:https://tool.chinaz.com/tools/unicode.aspx
       

       2、然后将中文转换的Unicode再复制到paramsInfo后面的{[ ]}内对应的中文参数的位置,示例:http://10.10.4.8:18080/smartbi/vision/openresource.jsp?paramsInfo=[{"name":"\u6708","value":"02","displayValue":"02"}]&resid=I297e39ed017cf851f8510d5e017d037344bf22ea&showtoolbar=true&refresh=true&user=admin&password=admin
       3、再将{[]}的所有值转换成UrlEncode编码,如图:
       
        转换后:
        

        4、再将转义后UrlEncode编码内容,替换之前传参的url连接上面的部分,即可正常传递中文参数,示例:http://10.10.4.8:18080/smartbi/vision/openresource.jsp?paramsInfo=%5B%7B%22name%22%3A%22%5Cu6708%22%2C%22value%22%3A%2202%22%2C%22displayValue%22%3A%2202%22%7D%5D&resid=I297e39ed017cf851f8510d5e017d037344bf22ea&showtoolbar=true&refresh=true&user=admin&password=admin  

        注:传参中若有其他的是特殊符号或者中文的也需要进行转码。
          

  • 无标签