0

可能重复:
规避同源策略的方法

目前我正在尝试拨打电话site.com/ajax/countPMjack.site.com但请求的状态已取消

4

3 回答 3

1

不幸的是,尽管由于浏览器政策,您在 site.com 上向 jack.site.com 进行了调用,但它落入了“相同域策略”的灰色阴影中,浏览器本质上将这两个域视为不同的域,并且由于该限制,停止了要求。实际上我不确定这只是浏览器的事情,甚至可能处于更高的水平。但底线是,允许 javascript 能够跨域甚至子域进行通信是一个安全风险,因为某些托管概念是子域,其中每个子域相互独立。

这是一个安全风险,因为它真的很容易将东西注入一个伪装成网站的毫无戒心的网站。

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

于 2012-07-27T16:08:09.927 回答
1

(来自 jQuery 的关于 AJAX 调用 的附加说明部分)由于浏览器安全限制,大多数“Ajax”请求都受制于同源策略;请求无法从不同的域、子域或协议成功检索数据。

话虽如此,您确实可以使用 2 个选项来规避跨域 AJAX 策略:

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

如果您需要更多说明,请告诉我。

于 2012-07-27T16:15:08.563 回答
0

这可能对您有用(添加到 jack.site.com):

document.domain = "site.com";

不确定这一点,但它适用于某些事情。

于 2012-07-27T16:15:06.413 回答