ajax请求到不同的主机

aar*_*acy 1 javascript ajax

我的网页上有以下javascript:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.google.com', true);
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    alert('resp received, status:' + xhr.status + ', responseText: ' + xhr.responseText);
  }                                                                       
};                                                                        
xhr.send(null);                                                           
Run Code Online (Sandbox Code Playgroud)

这执行并完成w/readyState为4,状态为0,以及empty responseText和responseXML.我知道它实际上正在发送请求b/ci尝试将xhr发送到我的机器上的服务器,而服务器实际上确实做出了响应.为什么我在responseText中没有得到任何东西?它是否有事情需要xhr进入不同服务器的事实?

当我打开js调试器并输入'xhr'来检查对象时我得到了这个:

XMLHttpRequest
DONE:4
HEADERS_RECEIVED:2
LOADING:3
OPENED:1
UNSENT:0
abort:function abort(){
addEventListener:function addEventListener(){
dispatchEvent:function dispatchEvent(){
getAllResponseHeaders:function getAllResponseHeaders(){
getResponseHeader:function getResponseHeader() {
onabort:空
的onerror:空
的onload:空
onloadstart:空
onprogress:空
的onreadystatechange:函数(){
打开:open()函数{
overrideMimeType:功能overrideMimeType(){
readyState的:4
removeEventListener:功能removeEventListener(){
responseText的: ""
responseXML的:空
发送:功能的send(){
setRequestHeader:功能setRequestHeader(){
状态:0
状态文本: ""
上传:XMLHttpRequestUpload
withCredentials:假

Li0*_*liQ 16

它是否有事情需要xhr进入不同服务器的事实?

是的,你不能通过AJAX向另一台服务器发送请求.然而,您可以从服务器端发送您的请求.因此,您需要实现以下工作流程:您的页面 - >您的服务器 - >第三方服务器 - >您的服务器 - >您的页面,其中" - >"表示发送数据.