URL中加號(+)轉義問題


URL中加號(+)轉義問題

前端通過URL傳入一個參數,在后台日志中發現參數中的加號變成了空格。
前端傳入a+b
后台日志a b
可以看到,+ 變成了空格。

先說結論

HTTP為了避免歧義,一些字符傳入后台需要做轉義,例如:

"       -    %22
#       -    %23
%       -    %25
&       -    %26
+       -    %2B

也就是說,+ 從前台傳到后台,應該轉換為 %2B
但是 + 作為 URL 參數時,會被瀏覽器自動轉換為空格(轉換機制不明,不知道瀏覽器為什么這么做)。
我們要做的很簡單,提前轉換一下,保證 + 被轉義成 %2B,這樣的話無論是通過 URL 傳,還是用 AJAX 傳值,都不可能出錯。
使用 encodeURIComponent 轉義的 js 代碼:

    var s = encodeURIComponent('1+1');
    console.log(s);

打開控制台查看輸出,+ 處理正確

1%2B1

順便一提,不要使用 encodeURI 函數,它不能正確轉義。

GET POST 表單提交的轉義

使用表單提交,無論是 GET 還是 POST,都會自動幫我們作出正確的轉義。

參考

url中帶有加號的處理方法


免責聲明!

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



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