我正在做这样的XMLHttpRequest:
var url = "myurl.html";
var http_request=new XMLHttpRequest();
http_request.onreadystatechange=function(){
if (http_request.readyState === 4){
console.log(http_request.response);
}
};
http_request.withCredentials = true;
http_request.open('GET',url,true);
http_request.send(null);
在控制台中http_request.response
是空的,但当我在Chrome中查看网络标签时,我会收到这些内容
如何从JavaScript中获取这些内容?
答案 0 :(得分:0)
请求来自同一网络上的其他计算机。 myurl.html
处的服务器不允许" Access-Control-Allow-Origin"。为此,在响应的标题中必须是这样的:
Access-Control-Allow-Origin:*
(*代表wildcard)
当标头缺少该信息时,Chrome会阻止JavaScript中的响应。因此,网络选项卡将显示响应,但不显示JS控制台。要在不同的浏览器中绕过CORS,有几种方法。我使用Chrome网上商店的Chrome扩展程序。
为了进一步确保请求正确完成,可以将回调函数修改为this:
http_request.onreadystatechange = function () {
if(http_request.readyState === XMLHttpRequest.DONE && http_request.status === 200) {
console.log(http_request.responseText);
}
};
http_request.readyState
应为4,但状态应为0(即使在“网络”选项卡中,它也会显示为200)。