get请求url参数中有+、空格、=、%、&、#等特殊符号的问题解决

最近工作中和第三方进行单点登录联调的时候遇到一个小坑,关于http请求问题。在请求链接中有了特殊符号例如

#字符在后台request取值时候为空。可以用字符的转义,当然也可以用post请求来解决参数问题。

案例:

(1)请求连接包含#,后边的参数获取都为空。

http://localhost:8080/ierp/?formId=pc_main_console#/dform&apptype=FACA&ticketId=18681569615

(2)将#号转义获取值正确。

http://localhost:8080/ierp/?formId=pc_main_console%23/dform&apptype=FACA&ticketId=18681569615

 

url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值。
解决办法
将这些字符转化成服务器可以识别的字符,对应关系如下:
URL字符转义

用其它字符替代吧,或用全角的。

+    URL 中+号表示空格                                 %2B   
空格 URL中的空格可以用+号或者编码           %20 
/   分隔目录和子目录                                     %2F     
?    分隔实际的URL和参数                             %3F     
%    指定特殊字符                                          %25     
#    表示书签                                                  %23     
&    URL 中指定的参数间的分隔符                  %26     
=    URL 中指定参数的值                                %3D