浏览器原生控件上传PDF导致hash值不同
用户要求对上传的pdf计算hash排重,上线后发现排重失败
1、postman直接调用接口没有发现问题,每次获取的hash值是一样的
2、apifox网页版,调用接口发现问题,清除缓存后(将选择的文件删除重新选择),就会出现相同文件hash值不同
3、apifox本地安装版本和postman一样没有发现问题
问题:
1、尝试修改Content-Type,各种类型试了一下,包括流方式无效每次hash还是不同
2、发现每次上传时request的Content-Length字段都有微小的长度差别,说明在上传前已经不同了
3、尝试前端算好hash回传,值任然不同
4、用fiddler抓包,发现postman用httpclinet去上传的二进制包和用网页控件在浏览器上传的包除了分隔符不同,网页上传还多了一些pdf相关的描述?
5、尝试将PDF文件的扩展名修改为其他名字,如abc.pdf改成abc.upl,再次使用网页post上传,问题消失,每次hash都一样
6、尝试了在上传前使用j上代码修改文件名后上传,无效。所以应该是网页input file 控件在读取文件时就做了处理
这个不知道是浏览器解析内核就是这样规定的还是bug