首页 > 解决方案 > Internet Explorer 11 不会每次都将 content-type 设置为 multipart/form-data

问题描述

我的应用程序需要将 FormData 对象发送到我的后端控制器。因此,我在前端服务中创建了一个 FormData 对象并附加了一些字段。它适用于 Firefox 和 Chrome,但不适用于 IE11。我Content-type: undefined按照某些线程中的建议在末尾设置并添加了一个纯文本字段,但它不起作用。

    service.SaveMyDatas = function(myDatas) {

        var formData = new FormData();
        var deferred = $q.defer();
          
        formData.append("myField", angular.toJson(encodeURIComponent(JSON.stringify(myDatas))));
        
        formData.append('onefield', 'test');
        
        $http({
            method: 'POST',
            url: appServer + '/controllerBackEnd',
            respondType: 'json',
            headers: { 'Content-Type': undefined },
            data : formData
        }).then(function (response) {
            if (response.status == 200) {
// .......
        }, function(response) { 
            deferred.reject(response);
        });
        
        return deferred.promise;
    }

有时它可以工作(1 / 1000 个请求,不知道为什么),但大多数时候标头Content-type从未设置为multipart/form-data, 只有plain/text. 如果我将 Blob 字段附加到 formData IE 设置正确的标头但正文请求为空。

如何强制 IE11 设置正确的标题?

标签: javascriptangularjsinternet-explorermultipartform-data

解决方案


推荐阅读