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有很多变种,得选择一种合适的形式