开发者社区> 问答> 正文

钉钉内置浏览器,手机端用Ajax发起图片后缀地址,method怎么一直是GET?

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',




展开
收起
wangxinyu 2019-04-17 17:57:15 1890 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
360手机卫士:插件化方案漫谈 立即下载
基于浏览器的实时构建探索之路 立即下载
基于浏览器的实时构建探索之路--玄寂 立即下载