為了保證在頁面傳遞資料的安全性,我們通常會對url傳遞的引數進行編碼解碼操作。我們寫乙個demo剖析url編碼解碼過程。
思路:對url的引數進行base64編碼
再進行url編碼。
將多個引數封裝到鍵值對,呼叫工具類同一進行編碼。
**:
// 傳遞資料到詳細頁工具類編碼方法:product p = new product() ;
// 封裝到dictionary中
dictionarydic = new dictionary(),,
,};
// 進行base64編碼 返回資料
string data = helper.urlcode.urlencode(dic);
// 進行url編碼
解碼就更簡單了,只需要取到request中的資料,呼叫工具類解碼。我們的資料就在返回的鍵值對中了。
**:
// 解碼url引數工具類解碼方法:string data = request["data"];
dictionarydicres = helper.urlcode.urldecode(data);
pro = new product();
pro.id = int.parse(dicres["id"]);
pro.price = decimal.parse(dicres["price"]);
pro.name = dicres["name"];
pro.category = dicres["category"];
public static dictionaryurldecode(string data)總結' });
string arrres = data.split(new char , stringsplitoptions.removeemptyentries);
//"key":"value"
for (int i = 0; i < arrres.length; i++)
, stringsplitoptions.removeemptyentries);
dic[keyvaluearr[0]] = keyvaluearr[1];
}foreach (var kvp in dic)
return dicres;
}
我們依次對引數進行base64編碼和ulr編碼。並且對多個引數進行統一的封裝。而在解碼時我們並沒有呼叫url解碼是因為返回的資料已經進行了url解碼了。
可能有人會問進行base64編碼就可以滿足需求了,為什麼還要多此一舉進行url編碼呢?
主要基於以下幾個原因:
url編碼後,base64編碼中生成的』=『 等字元不容易引起混淆。
base64編碼有可能產生'+' 這個字元,asp.net幫我們接受引數時會預設把'+' 替換為空格,所以此時資料就不對了。url編碼可以避免這種情況的發生。
url編碼後引數更加隱秘。
js實現和服務端一樣,只不過base64編碼需要我們自己實現。**:
// url引數編碼var b = new base64();
// base64編碼
var data = "";
data = encodeuricomponent(data); // url編碼
base64物件:
// base64 加密和解密function base64() else if (isnan(chr3))
output = output +
_keystr.charat(enc1) + _keystr.charat(enc2) +
_keystr.charat(enc3) + _keystr.charat(enc4);
}return output;
}// public method for decoding
this.decode = function (input)
if (enc4 != 64)
}output = _utf8_decode(output);
return output;
}// private method for utf-8 encoding
_utf8_encode = function (string) else if ((c > 127) && (c < 2048)) else
}return utftext;
}// private method for utf-8 decoding
_utf8_decode = function (utftext) else if ((c > 191) && (c < 224)) else
}return string;
}}
JS獲取url引數及url編碼 解碼
完整的url由這幾個部分構成 scheme host port path?query fragment 各部分的取法如下 window.location.href 獲取完整url的方法 即scheme host port path?query fragment window.location.pro...
URL編碼 解碼
url編碼 通過頁面傳輸資料給伺服器時,如果包含了一些特殊字元是無法傳送的。這時就需要先把要傳送的資料轉換成url編碼格式,再傳送給伺服器。伺服器會自動識別出資料是使用url編碼過的,然後會自動把資料轉換回來 url編碼 解碼的4個方法 encodeurl encodeurlcomponent de...
URL的編碼 解碼
通常如果一樣東西需要編碼,說明這樣東西並不適合傳輸。原因多種多樣,如size過大,包含隱私資料。對於url來說,之所以要進行編碼,是因為url中有些字元會引起歧義。例如,url引數字串中使用key value鍵值對這樣的形式來傳參,鍵值對之間以 符號分隔,如 s?q abc ie utf 8。如果你...