• 在单点登录中传递参数问题


    这两天一直忙一个事情,在单点登录运用的过程中因为要传6个参数,get请求每次只能获取第一个参数,post只能正常访问路径,而参数却全部为null.

    经历了postman的各种测试,晕头转向,在产品部老哥的一句话让我醍醐灌顶瞬间清醒,为什么不尝试把我们习惯的http请求中多参数传递的拼接符号

    “&”尝试转义!

    瞬间成功!

    这件事让我琢磨了两天,因为一句话而茅塞顿开。

    失败的请求方式:

    http://localhost:8090/gzdbthreeweb/control?pagesso&zxssoticket=Y4WNA3L4DLEBd5%2BWDWK%2F%2BOfnppmk9zCGVJ6La8Kl7aE%3D&_fwurl=//provide/receivePort.pt?
    title=ckx060606&task_sys_source=民生系统&task_sys_sendid=OKCORT&source=DZGZH&remark=ZW&deptName=民政局
    &attachment=%27172/fujian.doc@107/xxx.xml@61/vvv.pdf@71/zzz.xl%27

    这样的话我们只能获取请求路径下的第一个参数title。

    成功的请求方式:(把原来的参数拼接符号“&”替换为“%26”)

    http://localhost:8090/gzdbthreeweb/control?pagesso&zxssoticket=l0gOUtjtcELg9qPzRK7yW6A9ob8%2Bn%2FzY%2B13cuE6bcYw%3D&_fwurl=/provide/receivePort.pt?
    title=ckx060606%26task_sys_source=民生系统%26task_sys_sendid=OKCORT%26source=DZGZH%26remark=ZW%26deptname=民政局%27
    %26attachment=%27172/fujian.doc@107/xxx.xml@61/vvv.pdf@71/zzz.xl%27
    

    成功!可以获取每个参数。

    下面也将web中url请求中需要转义的字符分享给大家,避免在小问题中浪费大时间:

    web 开发中通过问号(?)方式在浏览器地址栏中传值时。浏览器是通过“&”来区分问号后的参数个数的。 如果出现传值参数中带有“&”时,在接受页面就会出现错误,类似如下请求路径:/next.jsp?param1=hendhs89&furej & param2=sss
    参数param1中含有转义字符“&” ,这样会导致被请求页的参数接收错误。
    在传值前 通过 java.net.URLEncoder.encode(param1) 编码处理后,可将转义字符转为16进制;
    1. + URL 中+号表示空格 %2B
    2. 空格 URL中的空格可以用+号或者编码 %20
    3. / 分隔目录和子目录 %2F
    4. ? 分隔实际的 URL 和参数 %3F
    5. % 指定特殊字符 %25
    6. # 表示书签 %23
    7. & URL中指定的参数间的分隔符%26
    8. = URL中指定参数的值 %3D
    9. ! URL中指定参数的值 %21

      

  • 相关阅读:
    codeblocks 更换颜色主题
    python3 回顾笔记1
    linux查找目录下的所有文件中是否含有某个字符串
    jupyter notebook 远程访问
    ubuntu ufw防火墙
    加载大量的xml数据 使用压缩方法解决(当然较小时也可以压缩)
    lua string介绍
    Lua和C++交互详细总结
    编写高性能的 Lua 代码
    lua中遍历table的几种方式比较
  • 原文地址:https://www.cnblogs.com/ckxlovejava/p/6963746.html
Copyright © 2020-2023  润新知