window.location.href=' background interface address'
 
  
 
 what is returned in the background is this. It cannot be downloaded with the location.href method, and the permission needs to be verified. If you do not need to verify the permission, you can use this location method directly 
.
 it's just not clear what to do with the returned file stream 
.
 you can try using Blob to convert to Url, and then download 
 using the a tag.
    https://juejin.im/post/5b078f.
  kick the problem back to the background. Why can't you download 
 Baidu network disk directly on this link? you can download everything with a single link. How can it be so troublesome 
 
'use strict';
function xxxExportApi($http, $q) {
  return {
    download: function () {
      var deferred = $q.defer();
      var promise = deferred.promise;
      var url = 'api/xxx/download/xxx';
      $http({
        method: 'GET',
        url: url,
        responseType: 'arraybuffer'
      }).then(function (response) {
        var headers = response.headers();
        var filename = headers['content-disposition'].split(';')[1].split('=')[1];
        var contentType = headers['content-type'];
        var linkElement = document.createElement('a');
        try {
          var blob = new Blob([response.data], {
            type: contentType
          });
          var url = window.URL.createObjectURL(blob);
          linkElement.setAttribute('href', url);
          linkElement.setAttribute("download", filename);
          
          if (typeof (MouseEvent) == 'function') {
            var event = new MouseEvent("click", {
              "view": window,
              "bubbles": true,
              "cancelable": false
            });
            linkElement.dispatchEvent(event);
          } else if (navigator.appVersion.toString().indexOf('.NET') > 0) {
            window.navigator.msSaveBlob(blob, filename);
          }
          
          deferred.resolve();
        } catch (err) {
          //console.log(ex);
          deferred.reject(err);
        }
      }).catch(function (err) {
        //console.log(err);
        deferred.reject(err);
      });
      return deferred.promise;
    }
  }
}
 
 the download solution of our project in angular1 is for reference only 
 directly use the submission of the form form, instead of using the get request of js, download it directly after submission 
function DownLoad(url , data) {
 var $iframe = $('<iframe />');
  var $form = $('<form  method="get" target="_self"/>');
  $form.attr('action', url);
  for (var key in data) {
    $form.append('<input type="hidden"  name="' + key  + '" value="' + data[key] + '" />');
   }
  $iframe.append($form);
  $(document.body).append($iframe);
  $form[0].submit();
  $iframe.remove();
}