Ajax调用子域

时间:2010-06-28 14:18:23

标签: javascript xmlhttprequest cherrypy

我有一台位于example.com的服务器运行apache,提供我的静态html文件。

我还在api.example.com上有一个json服务,运行python with cherrypy。

用户请求example.com并获取索引html页面。在那个页面上,我使用jquery向json服务发出ajax请求。 document.domain返回example.com

        $.ajax({
        type: 'GET',
        url: 'http://api.example.com/resource/',
        dataType: 'json',
        success: successCallback,
        error: errorHandler
    });

但是,我无法在firebug中看到ajax请求的响应正文。这让我相信浏览器(FF)不支持这一点。

实现这一目标的最佳方法是什么?如果可能的话,我宁愿不在example.com的apache后端使用任何代理。

5 个答案:

答案 0 :(得分:4)

你也可以通过添加callback =来使用JSONP?到网址的末尾。 jQuery已经知道如何处理这些类型的请求,但它确实需要一些服务器端更改来处理回调参数。

答案 1 :(得分:0)

据我所知,你不能做跨域AJAX。

Why is cross-domain Ajax a security concern?

虽然我猜你可以做一个IFRAME解决方法

Cross Sub Domain Javascript

答案 2 :(得分:0)

仅在同一域上支持AJAX请求。但是,您可以使用首选脚本语言编写http代理并调用该http代理。您可以在用php编写的AJAX代理上查看这个小tutorial

答案 3 :(得分:0)

尝试更改子域中的域名,例如

<script type="text/javascript">    
  document.domain = 'example.com';
</script>

如果不起作用,请在您的域名页面中更改您的document.domain。

答案 4 :(得分:-1)

使用document.domain使域成为顶级域而不是子域。

document.domain="example.com"

这是MDN上的described in detail