通过get方法从其他域获取数据

时间:2014-11-30 10:04:18

标签: javascript jquery

我正在尝试为我的客户的网站实施宗教日历。我有服务获取另一个域上的日历的xml / json数据。链接工作,但当我尝试从jQuery get方法获得它成功但没有数据

$( document ).ready(function() {
        $.get('http://api.xhanch.com/islamic-get-prayer-time.php?lng=16.047624400000018&lat=45.78988090000001&yy=2014&mm=11&gmt=1&m=xml', function(data) {
        alert(data);
    });
});

现在,请求只来自localhost,但是,我没事。那么,是否有错误或有其他方法来获取此数据?我试过jQuery.ajax(),但它是一样的。请求成功,但没有数据要提醒。

1 个答案:

答案 0 :(得分:0)

由于安全原因,Web浏览器会阻止对不同域的AJAX请求,除非在服务器的响应中设置了“Access-Control-Allow-Origin”标头。当AJAX请求来自用户时,Web浏览器会检查目标域是否相同。如果目标域相同,则发送请求。否则,浏览器向远程服务器发送不同的请求,并检查标题的相应响应。如果标头包含跨域请求的权限,则浏览器会将用户的AJAX请求发送到远程服务器。否则浏览器会阻止它...您发送请求的服务器似乎没有设置标头,因此浏览器不允许。

作为替代方案,您可以在服务器端创建代理。来自用户的请求将发送到具有相同域的服务器。然后您的服务器将请求发送到远程服务器(api.xhanch.com)并获得响应。然后,您可以使用从远程服务器获得的响应来回复用户的响应。

enter image description here

还有一些方法可以放宽相同的原始政策(例如:JSONP)。你可以谷歌并学习它们。