眾多後臺、前端和終端之間的矛盾都是因它引起的?詳解URL編碼

產品經理應該熟悉每天在瀏覽器地址欄中多次輸入的URL。瀏覽器地址欄很包容,可以輸入英文、中文、日文和韓文,瀏覽器也

可以給出更正確的反饋

不過,這只是一個表象。現實的網絡世界需要非常嚴格的輸入語言,可以說是屬於英文字符。雖然在URL中使用一些漢字在技術上不存在識別和傳輸的問題,但網絡標準協議規定URL只能包含英文字符。

眾多後臺、前端和終端之間的矛盾都是因它引起的?詳解URL編碼

那麼產品經理在地址欄中看到和使用的中文呢?實際上,這只是一個瀏覽器技巧。雖然產品經理在瀏覽器的輸入框中使用中文,但一旦瀏覽器發出網絡請求,請求中的中文將不復存在,它將成為產品經理經常看到但不知道的東西,如“E5%82%BB%E5%91%80”,這是URL中的中文被編碼的結果。

產品經理可能會發現這個編碼結果有點奇怪。與通常的編碼相比,它有很多“%”,這個“%”只是一個分隔符。如果將“%”替換為空格,則可以看到熟悉的編碼結果,如上面的“E5 82 BB E5 91 80”。敏銳的產品經理可能會看到這是中國的UTF-8編碼。

按照標準編寫代碼是合理的,但是標準沒有規定使用什麼代碼,所以開發人員開始打自己的仗。採用UTF-8碼和GB2312碼,不重要的是這兩個代碼的結果不一樣。大多數時候,後臺、前端和用戶終端之間的矛盾都是由它引起的。更讓開發人員煩惱的是,標準並沒有提供編碼規則,所以程序員開始自由地使用它。

例如,在實際的URL使用中,URL的參數往往是組裝的,組裝後的URL參數的來源往往是不確定的。但是,不管參數的內容是什麼,

為了避免漢字的出現,開發人員通常在URL組裝後進行統一編碼。問題是,參數源可能對URL進行了一次編碼,編碼後的字符串也可以再次編碼,就像俄羅斯套娃一樣,所以當他們看到編碼結果時,甚至無法確認需要解碼多少次才能得到真正的結果。

眾多後臺、前端和終端之間的矛盾都是因它引起的?詳解URL編碼

當產品經理看到這個字符串包含許多“%”時,他們不認為它是加密數據。他們可以通過任何URL解碼工具恢復它。



分享到:


相關文章: