如何从子域调用ajax请求

时间:2012-07-27 16:02:03

标签: php javascript jquery

  

可能重复:
  Ways to circumvent the same-origin policy

目前我正试图从site.com/ajax/countPM拨打jack.site.com,但请求的状态为已取消

3 个答案:

答案 0 :(得分:1)

不幸的是,尽管您在site.com上通过浏览器政策拨打电话到jack.site.com,这属于“相同域策略”的灰色阴影,但浏览器基本上将这两个域视为不同的域,并且由于这一点限制停止请求。实际上我不确定这只是一个浏览器的东西,甚至可能在更高的层次。但最重要的是,允许javascript能够跨域甚至子域进行通信具有安全风险,因为一些托管概念是子域,其中每个子域独立于另一个子域。

它存在安全风险,因为它很容易将内容注入假冒网站的毫无疑问的网站。

无论如何,更简单的解决方法之一是使用某种形式的服务器端脚本。在我的PHP案例中,您将使用cURL或Soap来获取远程域内容的内容,在这种情况下,我猜JSON或XML对象,然后从那里将其推送到您的脚本。

答案 1 :(得分:1)

(来自jQuery的关于AJAX调用的Additional Notes部分) 由于浏览器安全限制,大多数“Ajax”请求都遵循相同的原始策略;请求无法成功从其他域,子域或协议中检索数据。

既然如此,您可以使用2个选项来规避跨域AJAX策略:

  • 如果您正在使用JSON数据,您可以考虑尝试JSONP - 这是专门为处理类似AJAX的调用的跨域数据传递而创建的。
  • 创建一个服务器端脚本,作为AJAX所在域(jack.site.com)的中介或传递,可以代表您的AJAX脚本服务器端进行调用。

如果您需要更多说明,请与我们联系。

答案 2 :(得分:0)

这可能适合您(添加到jack.site.com):

document.domain = "site.com";

确实不确定,但它适用于某些事情。