2020-08-20|閱讀時間 ‧ 約 2 分鐘

URL encode/decode

假如今天A網站要串B網站,網址如下, http://xxx.tsmc.com.tw/qwe?a=1&b=http://xxx.tsmc.com.tw/ghk?iu=3&re=ko&c=356
而其實http://xxx.tsmc.com.tw/ghk?iu=3&re=ko這個是完整的網址,因此B網站在取b參數的時候, 會拿到http://xxx.tsmc.com.tw/ghk?iu=3這個value,因為是根據&去拿的,&是網址中的關鍵字。
因此url encode 就是為了解決這種問題,網址中的params value 只要有可能含有關鍵字,最好都要做encode。
這樣B網站根據&去取參數的時候,就可以取到完整的資訊,再對param value 做decode 即可拿到原始值。

以javascript為例:
A網站先將含有關鍵字的param value做encode, 再去連B網站
encodeURIComponent("http://xxx.tsmc.com.tw/ghk?iu=3&re=ko"); = http%3A%2F%2Fxxx.tsmc.com.tw%2Fghk%3Fiu%3D3%26re%3Dko
連結B網站的URL會變成:
http://xxx.tsmc.com.tw/qwe?a=1&b=http%3A%2F%2Fxxx.tsmc.com.tw%2Fghk%3Fiu%3D3%26re%3Dko&c=356
B網站根據&去取出參數,把b=的value decode,即可拿到原始的值。
decodeURIComponent("http%3A%2F%2Fxxx.tsmc.com.tw%2Fghk%3Fiu%3D3%26re%3Dko");
= http://xxx.tsmc.com.tw/ghk?iu=3&re=ko

分享至
成為作者繼續創作的動力吧!
小弟是一位軟體工程師,樂於幫助他人,撰寫技術文章除了幫助自己複習以外,也希望可以幫助到他人,若文章內容有誤,還請大大不吝給予指教!
© 2024 vocus All rights reserved.