1. 程式人生 > >實際項目中前後端傳輸字符串URL編解碼過程中遇到的一些問題

實際項目中前後端傳輸字符串URL編解碼過程中遇到的一些問題

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編解碼過程中遇到的一些問題