url decode problem 解決方法
更新時間:2011年12月26日 21:45:03 作者:
今天被告訴了一個奇怪的事兒,第三方網(wǎng)站使用我們提供的簽名是出現(xiàn)了錯誤,原因是使用php的urldecode時把加號(+) 替換成了空格
試驗了一下python的urllib庫以及js 的 encodeURIComponent 均不會替換??崭馿ncode也是替換成了 '%20' 。python提供了urllib.quote_plus, urlib.unquote_plus來處理空格->加號,看起來還是比較合理的。
查了一下 RFC 3986: 有下面一段
Scheme names consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-").
RFC 2396 有下面的一段
The plus "+", dollar "$", and comma "," characters have been added to those in the "reserved" set, since they are treated as reserved within the query component.
表示加號已經(jīng)是url的保留字了,不需要轉(zhuǎn)義。
然后html4文檔里才有關(guān)于加號的轉(zhuǎn)義:
application/x-www-form-urlencoded
Forms submitted with this content type must be encoded as follows:
Control names and values are escaped. Space characters are replaced by`+', and then reserved characters.....
聲明只有content-type為application/x-www-form-urlencoded時才會對+做轉(zhuǎn)義。
又翻了下php的文檔,發(fā)現(xiàn)有一個
rawurlencode() - URL-encode according to RFC 3986
也就是php又搞了rawurlencode和rawurldecode把標準實現(xiàn)了。。。。
不能反一下么,畢竟大部分人應(yīng)該都會用urlencode。php真是蛋疼啊。。。。
查了一下 RFC 3986: 有下面一段
Scheme names consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-").
RFC 2396 有下面的一段
The plus "+", dollar "$", and comma "," characters have been added to those in the "reserved" set, since they are treated as reserved within the query component.
表示加號已經(jīng)是url的保留字了,不需要轉(zhuǎn)義。
然后html4文檔里才有關(guān)于加號的轉(zhuǎn)義:
application/x-www-form-urlencoded
Forms submitted with this content type must be encoded as follows:
Control names and values are escaped. Space characters are replaced by`+', and then reserved characters.....
聲明只有content-type為application/x-www-form-urlencoded時才會對+做轉(zhuǎn)義。
又翻了下php的文檔,發(fā)現(xiàn)有一個
rawurlencode() - URL-encode according to RFC 3986
也就是php又搞了rawurlencode和rawurldecode把標準實現(xiàn)了。。。。
不能反一下么,畢竟大部分人應(yīng)該都會用urlencode。php真是蛋疼啊。。。。
相關(guān)文章
PHP $O00OO0=urldecode & eval 解密,記一次商業(yè)源碼的去后門
最近看到如下的php代碼$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");等很長的代碼,這里給出破解方法,需要的朋友可以參考下2020-09-09
php通過Chianz.com獲取IP地址與地區(qū)的方法
這篇文章主要介紹了php通過Chianz.com獲取IP地址與地區(qū)的方法,是解析IP地址與地區(qū)非常實用的技巧,需要的朋友可以參考下2015-01-01
深思 PHP 數(shù)組遍歷的差異(array_diff 的實現(xiàn))
深思 PHP 數(shù)組遍歷的差異(array_diff 的實現(xiàn))...2006-06-06

