url引數的編碼解碼Demo

2022-03-03 20:05:17 字數 2923 閱讀 2268

為了保證在頁面傳遞資料的安全性,我們通常會對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。如果你...