Android版微信中访问OSS出现报错

问题描述

将JS文件上传到OSS,只在Android版微信端和QQ浏览器中报错。

问题原因

微信或者QQ加了Content-Type:application/octet-stream这个头信息。

解决方案

  1. 使用笔记本打开Wi-Fi,手机连接Wi-Fi做上传测试。

  2. 在电脑上用Wireshark抓包工具进行抓包,抓包后发现是签名无法匹配的错误,具体分析发现多加了一个Content-Type:application/octet-stream信息。这个头SDK在计算签名时并没有加上,但是发送请求时微信或者QQ浏览器会加个这个头信息导致报错。这个头计算签名也是要计算在内的。

  3. 经测试,去除这个头后再模拟上传没有问题。因此问题定位是微信或者QQ加了Content-Type:application/octet-stream这个头信息。

  4. 在微信端去除这个头信息。