运行 JavaScript 和 jQuery 代码时,我在浏览器控制台中收到此错误。过去有人犯过这个错误吗?任何帮助将不胜感激。
错误:
条件:未选择任何数据类型
ERROR1:浏览器控制台错误:从源“http://xyz.8888”访问“https://apex/api”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
条件:数据类型设置为“jsonp”
ERROR2:没有浏览器控制台错误,但没有收到任何响应。但是在 chrome 浏览器的“网络”选项卡下获取此内容以调用 API:(失败)net::ERR_BLOCKED_BY_ORB
更新了我的ajax调用如下: 尝试将数据类型设置为“jsonp” 尝试将 Access-Control-Allow-Origin 设置为 *
// Download the data
myConnector.getData = function(table, doneCallback) {
console.log("Inside Data download");
*****Works until here, but fail at this ajax call*********
$.ajax({
crossDomain: true,
headers: {'Access-Control-Allow-Origin': '*'},
dataType: 'jsonp', ====> IF YOU REMOVE DATATYPE IT GIVES ERROR 1 ABOVE WITH DATATYPE IT GIVES ERROR 2
url: 'https://apex/api',
success: function(resp){
var feat = resp.features,
tableData = [];
// Iterate over the JSON object
for (var i = 0, len = feat.length; i < len; i++) {
tableData.push({
"id": feat[i].id
});
}
table.appendRows(tableData);
doneCallback();
}
});
};
这是一个安全错误,表明默认设置不允许您执行此操作。
Access-Control-Allow-Origin
是响应标头。 它必须由服务器设置,而不是由您设置。 如果您控制服务器,则可以更改这些设置。 否则,您可以与控制 API 的公司联系。
请参阅 MDN 上的跨源资源共享了解更多信息。