AngularJs - 服务器抛出异常''XMLHttpRequest cannot load the "URL" Response for preflight is invalid (redirect)'

AngularJs - Server throwing exception''XMLHttpRequest cannot load the "URL" Response for preflight is invalid (redirect)'

服务器 returning 对象为“undefined”和“XMLHttpRequest 无法加载 "URL" 响应的原因是什么预检无效(重定向).

应用程序流程 - 它只是一个正常的 post 服务,在 return 中向服务器发送文档详细信息应该 return 一个包含各种参数的对象,但它 return ing 'undefined'

post文档

的服务
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);
    }

假设你 post 中的 URL 目标是正确的,看来你有 CORS 问题,让我解释一下。 不知道服务器端API是不是自己开发的,如果是的话,需要添加CORS访问,你的服务器必须return这个header:

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

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

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

所以,你必须检查这一步,你的问题是服务器端不允许你的请求。

顺便说一下,并非所有 content-type 都在 CORS 请求中受支持,here 您有更多信息肯定会有帮助。

另一个 link 有助于解决由于重定向而发生 302 时的问题。在这种情况下,POST 响应还必须包含 Access-Control-Allow-Origin header.