Access-Control-Allow-Origin不允许加载XMLHttpRequest

我正在尝试访问education.com API数据。 但是,我一直收到错误指出的错误:

XMLHttpRequest无法加载http://api.education.com/service/service.php?f=schoolSearch&key=mykey&sn=sf&v=4&city=Atlanta&state=ga&Resf=json 。 Access-Control-Allow-Origin不允许使用Origin。

我的代码如下:

$(function(){ $.getJSON('http://api.education.com/service/service.php?f=schoolSearch&key=mykey&sn=sf&v=4&city=Atlanta&state=ga&Resf=json', function(data) { console.log(data); }); }); 

有谁可以帮助我吗?

关于跨域AJAX问题的文章在这里发表了一段时间:

针对IE,FIREFOX,CHROME,SAFARI – JQUERY的JSON响应交叉域AJAX请求

如果您控制响应服务器,最简单的方法是为以下内容添加响应头:

 Access-Control-Allow-Origin: * 

这将允许跨域AJAX。 在PHP中,您需要修改响应,如下所示:

  

你可以在Heache conf或htaccess文件中设置Header set Access-Control-Allow-Origin *设置它就像魅力一样

重要的提示:
通配符将允许任何域向您的主机发送请求。 我建议将星号替换为您将运行脚本的特定域。

除非将education.com服务器配置为允许CORS( Cross-Origin Resource Sharing )请求(即Access-Control-Allow-Origin位),否则无法使用浏览器执行此操作。

但是,您的服务器可以代表您发出请求,然后您可以从那里检索数据。

在ZF1中可以完成如下:

  public function indexAction() { $turnkey = array( "uris" => array("176.xx:3478", "3478"), "username" => "my_username", "password" => "my_password" ); $content = Zend_Json::encode($turnkey); $this->getResponse() ->setHeader('Access-Control-Allow-Origin', "*") ->setHeader('Content-Type', 'application/json') ->setBody($content) ->sendResponse(); exit; } 

与其说是问题的解决方案,而不是解决问题的方法 – 在没有网络安全的情况下启动浏览器:

 in MacOS this would work as follows: cd to ../../Applications/Google\ Chrome.app/Contents/MacOS then start the brwoser with the appropiate flag: Google\ Chrome --disable-web-security' 

注意:永远不要使用浏览器进行正常冲浪,这只是为了让您在遇到紧急情况时使用! 干杯