在纯javascript ajax中捕获跨域响应
我希望在纯javascript ajax中捕获跨域响应,而不使用jquery或其他外部库在纯javascript ajax中捕获跨域响应,javascript,ajax,Javascript,Ajax,我希望在纯javascript ajax中捕获跨域响应,而不使用jquery或其他外部库 var xmlhttp, response; try { xmlhttp = new XMLHttpRequest(); } catch(e) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e2) { try { xmlhttp = ne
var xmlhttp, response;
try {
xmlhttp = new XMLHttpRequest();
} catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e2) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4) {
if(callback != undefined) {
console.log(xmlhttp.responseText);
}
}
}
url = "http://xxxx.com/layer.php?callback=callRes";
xmlhttp.open("GET", url, false);
xmlhttp.setRequestHeader("Content-Type",
"application/json,application/javascript,text/javascript");
xmlhttp.send();
花了很多时间和谷歌搜索,但没有找到任何解决方案
建议是最受欢迎的,但不仅仅是脚本方法纯javascript ajax我假设您希望在控制台中看到响应 在调用
console.log()
之前,您要检查回调是否存在。在给定的代码段中,回调
尚未定义,因此这可能是阻止输出xmlhttp.responseText
的唯一障碍
解决方案:删除if(callback!=undefined)
,只调用console.log(xmlhttp.responseText)
。同源策略只能通过使用一些浏览器插件来避免。为什么不是JSONP呢?它必须是JSONP。正如我在问题中提到的,我想使用纯javascript ajax而不是脚本方法。响应来自哪里?您有权调整标题吗?如果是这样,请使用CORS并调整标题以允许前端代码访问。如果您请求的资源在S3上,这甚至可以在S3上完成。您有权访问此文件吗?我正在尝试,但不幸的是它不起作用。您收到一些错误消息吗?在onreadystatechange
函数的开头添加console.log(xmlhttp.readyState)
,查看它的运行情况。在网络窗口中获取响应,但不捕获