在纯javascript ajax中捕获跨域响应[重复]
Posted
技术标签:
【中文标题】在纯javascript ajax中捕获跨域响应[重复]【英文标题】:Catch cross domain response in pure javascript ajax [duplicate] 【发布时间】:2014-09-23 11:19:53 【问题描述】:我想在不使用 jquery 或其他外部库的纯 javascript ajax 中捕获跨域响应。
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
【问题讨论】:
应该不可能。同源策略只能通过使用一些浏览器插件来避免。为什么不是 JSONP? 它会有是JSONP。 正如我在问题中提到的,我想使用纯 javascript ajax 而不是脚本方法 响应来自哪里?您有权调整标题吗?如果是这样,请使用 CORS 并调整标题以允许您的前端代码访问。如果您请求的资源在 S3 上,这甚至可以在 S3 上完成。 你可以访问这个文件xxxx.com/layer.php 吗? 【参考方案1】:我假设您想在控制台中查看响应。
在调用console.log()
之前,您正在检查callback
是否存在。在给定的代码中,callback
尚未定义,所以这可能是阻止xmlhttp.responseText
输出的唯一障碍。
解决方案:删除 if (callback != undefined)
并调用 console.log(xmlhttp.responseText)
【讨论】:
我正在尝试这个,但不幸的是它不起作用 您收到一些错误消息?在onreadystatechange
函数的开头添加console.log(xmlhttp.readyState)
,看看能走多远。
在网络窗口中得到响应但没有捕捉到以上是关于在纯javascript ajax中捕获跨域响应[重复]的主要内容,如果未能解决你的问题,请参考以下文章