在單點登錄中傳遞參數問題


這兩天一直忙一個事情,在單點登錄運用的過程中因為要傳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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM