Base64编码不要用在URL中

Base64编码不要用在URL中

问题描述:

今天有位兄弟把base64编码过的string放在了url中,如:

http://***.com?key=base64codestring

 

孰不知base64编码后的字符串中有=号,而在服务器端根据key读取querystring(或parameter map)的时候就会截断掉=号,解码时就出现了问题。

 

好像不是这个问题,问题还在调查中。

 

URL为啥不用URLEncoder编码呢?

 


问题补充
kdlan 写道
BASE64有专门的url改进的编码
把=和+都替换了


是的。

[quote]URL为啥不用URLEncoder编码呢?[/quote]
大家都知道规则,这样,使用get方式,一定子就能知道请求的具体内容。
使用自定义方式的url encoder,增加了直接decode的难度。
taobao上使用的就是自定义的encoder方式。

BASE64有专门的url改进的编码
把=和+都替换了

有些文件上传就是采用base64编码提交上传的,在服务器段要对接受到的base64编码进行一个小小的处理,就可以生成文件了。比如一些在线截屏功能,就用的是这种结构

Java中给了URLEncoder的静态方法编码url了,html标准推荐用utf8编码,其他都可能出现不兼容;base64有很多变种,得选择一种合适的形式