實際項目中前後端傳輸字符串URL編解碼過程中遇到的一些問題
阿新 • • 發佈:2018-03-17
component put 傳輸 之間 body unicode編碼 方式 gpo 項目
線上版本(包括12.2,12.3版本)中,參照過濾條件在傳輸過程中經過了URL編碼及解碼過程,前後端使用的API之間的差異導致一些問題,現記錄如下:
前端URL編碼API
encodeURIComponent使用UTF-8編碼格式對字符串進行URL編碼;
後端URL解碼API:目前代碼中存在以下三種解碼方式:
System.Web.UI.Server.UrlDecode,存在問題:無法解析%2B為+,輸出為空白字符;
Microsoft.JScript.GlobalObject.unescape,存在問題:只能使用Unicode編碼格式,與前端API使用的UTF-8編碼格式不匹配,具體問題是漢字無法正確解碼;
System.Web.HttpUtility.UrlDecode,存在問題:可以指定編碼格式,便於與前端API使用的UTF-8編碼格式匹配,但對%2B的解碼是非冪等的,第一次解碼可以被正確解析為+,而對+解碼則輸出空白字符;
鑒於以上存在的問題,在服務端解碼過程中,需要謹慎考慮各種場景下(包括前端、領域)的編解碼方式、次數(夾雜BASE64編碼)等因素進行解碼。
實際項目中前後端傳輸字符串URL編解碼過程中遇到的一些問題