向另一台服务器发出AJAX请求

san*_*osh 15 javascript ajax

我有AJAX代码,如果您请求对远程服务器进行AJAX调用,请求将失败:

function loadXMLDoc() {
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
  else {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
  }

  xmlhttp.open("GET", "http://www.google.com", true);
  xmlhttp.send();
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

Dan*_*llo 16

看起来你已经碰到了同样的原产地政策.您必须使用相对路径而不是绝对http://www.google.com路径.

作为一种可能的解决方法,您可以设置一个非常简单的反向代理(如果您使用的是Apache,则使用mod_proxy).这将允许您在AJAX请求中使用相对路径,而HTTP服务器将充当任何"远程"位置的代理.

在mod_proxy中设置反向代理的基本配置指令是ProxyPass.您通常会按如下方式使用它:

ProxyPass     /web-services/     http://third-party.com/web-services/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,浏览器将请求,/web-services/service.xml但服务器将通过充当代理来服务于此http://third-party.com/web-services/service.xml.

另一个常见的解决方法是使用JSONP.