AngularJs - 服务器抛出异常''XMLHttpRequest无法加载“URL”预检的响应无效(重定向)'

时间:2017-09-06 11:30:41

标签: javascript angularjs angularjs-directive angularjs-scope

服务器返回对象的原因是“未定义”和“ XMLHttpRequest无法加载”URL“预检的响应无效(重定向)

应用程序的流程 - 它只是一个普通的邮政服务,向服务器发送文档详细信息作为回报应该返回一个包含各种参数的对象,但它返回“未定义

发布文件的服务

fileUpload: {
    method: 'POST',
    url: config.apiPath + 'employee/service/pushRecords', //this is the URL that should return an object with different set of parameters (currently its returning Error error [undefined])
    isArray: false,
    params: {},
    headers: {
        'content-type': undefined
    }
},

我在创建formdata w.r.t document

之后使用的服务
function registerFormdata(files, fieldName) {
    files = files || [];
    fieldName = fieldName || 'FileSent';
    var returnData = new FormData();

    _.each(files, function (file, ind) {
        returnData.append(fieldName,file);
    });

    return returnData;
}

现在这是使用这些服务的控制器

function sendFilesToServer() {
        var formData = employeePushService.registerFormdata(directive.dropZoneFile.fileToUpload);
        return docUploadService.fileUpload(formData)
            .then(function(document) {              
         // Extra actions but here the server should be returning an object with set of parameters but in browser console its Error [undefined]
            }).catch(logger.error);
    }

1 个答案:

答案 0 :(得分:0)

假设你的帖子中的URL目标是正确的,似乎你有一个CORS问题,让我解释一些事情。 我不知道它是自己开发的服务器端API,如果是,你需要添加CORS访问权限,你的服务器必须返回这个标题:

  

Access-Control-Allow-Origin:http://foo.example

您可以将http://foo.example替换为*,这意味着所有请求来源都可以访问。

首先,您需要知道在客户端发出AJAX CORS请求时,您的浏览器首先请求服务器检查服务器是否允许请求,此请求是OPTION方法,您可以看到这个例如,如果在chrome中启用了开发工具,则可以在网络选项卡中看到该请求。 因此,在该OPTIONS请求中,服务器必须在响应头中设置Access-Control-Allow-Origin头。

因此,您必须检查此步骤,您的问题是服务器端不允许您的请求。

顺便说一句,并非所有内容类型都在CORS请求中受支持,here您有更多信息肯定会有所帮助。

当302因重定向而发生问题时,另一个link可以帮助解决问题。在这种情况下,POST响应还必须包含Access-Control-Allow-Origin标头。