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.
服务器 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.