var xhr = $.ajaxSettings.xhr();
var headers = $.extend({
'Upload-Offset': range_from,
'Content-Type': 'application/offset+octet-stream'
}, self.options.headers);
var options = {
type: 'PATCH',
url: self.fileUrl, // 图片后缀地址例如:/api/v1/upload/upload_resumable/default/default.zopen.standalone/c/4/c/4a94af6df4522ab6f8023e8a7f0b9.jpg
data: blob,
processData: false,
contentType: self.file.type,
cache: false,
xhr: function() {
return xhr;
},
headers: headers
};
$(xhr.upload).bind('progress', function(e) {
self.bytesWritten = bytesWrittenAtStart + e.originalEvent.loaded;
self._emitProgress(e);
});
this._jqXHR = $.ajax(options)
.fail(function(jqXHR, textStatus, errorThrown) {
var msg = jqXHR.responseText || textStatus || errorThrown;
self._emitFail(msg);
})
.done(function() {
if(range_to === self.file.size){
if (self.options.resetAfter === true) {
self._urlCache(false);
}
self._emitDone();
}else{
self._uploadFile(range_to);
}
});
};
上面url参数是图片后缀地址,服务端获取的request method 变成了GET,如果url改成非图片后缀地址,request method是正常的。
测试type参数为POST也是相同问题。
问题总结:发起Ajax请求,如果请求地址是一个图片后缀地址,浏览器把请求方式统一变成了GET
IOS系统没问题,部分安卓机型有问题,有问题的钉钉版本和浏览器user agnet 如下:
'HTTP_USER_AGENT': 'Mozilla/5.0 (Linux; U; Android 9; zh-CN; BKL-AL00 Build/HUAWEIBKL-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.4.974 UWS/2.13.1.52 Mobile Safari/537.36 AliApp(DingTalk/4.6.18) com.alibaba.android.rimet/11146596 Channel/227200 language/zh-CN',
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。