淘宝的坑

今天测试给提了一个 bug,查来下,发现是淘宝 oauth 的一个坑。

访问淘宝登录页的 URL 如下:

http://oauth.daily.taobao.net/authorize?response_type=code&client_id=1024987646&redirect_uri=https://xxxx.com/taobao/retailer/auth%3Freturn_url%3D/taobao/retailer/sign%253Fseller_id%253D12321321%2526channel_id%253DALI_HEALTH%26seller_id%3D12321321%26channel_id%3DALI_HEALTH&state=1442&view=web

注意里面的参数%2526channel_id,正常登录后,返回的 URL 应该将其转义为%26channel_id,而实际上,淘宝将其转义为&channel_id了,也就是做了2次 decode。而在此之前的%253Fseller_id参数却正常地转义为%3Fseller_id了,经测试,在此之后再额外加一个2次 encode 的参数,仍旧会被做2次 decode。

淘宝跳转的 URL 如下:

https://xxxx.com/taobao/retailer/auth?returnurl=%2Ftaobao%2Fretailer%2Fsign%3Fsellerid%3D12321321&channelid=ALIHEALTH&sellerid=12321321&channelid=ALI_HEALTH&code=taqV664iACSMfDo22zdjpaPQ404&state=1442