如何在子域之间进行jQuery ajax调用?

时间:2012-07-19 11:41:13

标签: jquery ajax

我有一个类似下面的域名。

我有两个子域,如下所示。

http://foo.jayshit.info

http://bar.jayshit.info

我想从foo.jayshit.info到bar.jayshit.info进行jQuery ajax调用,以获取一些HTML或将一些数据更新回服务器。

我知道由于同源政策并非那么容易。而且我也不想使用 JSONP 。因为我希望我的ajax调用具有 async:false ,如下所示。

$.ajax({
    type: "POST",
    cache: false,
    url: tURL,
    data: tData,
    async: false
});

如果有人遇到一些解决方法,请告诉我。

提前致谢。

此致

5 个答案:

答案 0 :(得分:5)

由于您可以控制其他子域,因此您可以从bar.jayshit.info发送this header

Access-Control-Allow-Origin: http://foo.jayshit.info
Access-Control-Allow-Methods: GET, POST

现代浏览器尊重这些标头并允许您发出请求。对于IE8,您需要使用jQuery不支持的XDomainRequest

答案 1 :(得分:0)

http://foo.jayshit.infohttp://bar.jayshit.info是两个不同的域名,因此您需要跨域请求,来自Google的第一个链接:http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

答案 2 :(得分:0)

使用

dataType: "jsonp"

...

$.ajax({
    type: "POST",
    dataType: "jsonp",
    cache: false,
    url: tURL,
    data: tData,
    async: false
});

更多信息:

http://api.jquery.com/jQuery.ajax/

答案 3 :(得分:0)

我建议您在代码中添加以下内容:

jQuery.support.cors = true;

有关详细信息,请参阅this link

答案 4 :(得分:0)

答案是CORS和JSONP。 IE不支持CORS,你必须等待IE10才能得到它。 JSONP只允许您进行跨域GET而不是POST,PUT和DELETE。 CORS确实解决了这些问题,所有其他浏览器都支持它。

您可以解决此问题的另一种方法是在您的网站中构建一个代理,该代理将从您的服务器进行调用。这将使您了解浏览器中的跨域问题。如果你想知道的话,这些都是安全预防措施。