无法加载http://www.google.co.uk/。 Access-Control-Allow-Origin不允许使用origin http:// localhost

时间:2011-04-15 13:49:21

标签: jquery load cross-domain access-control

我只是想加载谷歌,在div中使用锚标签点击功能。但是我收到了这个错误:

cannot load http://www.google.co.uk/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

我试图以这种方式访问​​它:

$(".someclass").load("http://www.google.co.uk");

我知道跨域是受限制的,但有没有办法做到这一点? 我也试过了jquery的ajax函数。但没有成功。 一些建议请。

2 个答案:

答案 0 :(得分:2)

由于same origin policy,您无法加载Google。

要进行XHR呼叫,协议,域和端口必须匹配。

如果您在http://bla.example.com,则可以更改域名......

document.domain = 'example.com';

要解决此问题,您可以代理数据服务器端或使用YQL

答案 1 :(得分:0)

您的服务器上需要代理脚本。从前端调用该代理脚本,以便有效地回调原始服务器。

$( '.someclass ').load('?proxy.php URL = HTTP://www.google.co.uk');

服务器端代理然后提取请求的URL并将其返回到前端。

确保将网址列入白名单,以便无法利用该脚本。不要在前端和代理脚本之间传递真实的URL,而是使用逻辑密钥。

$( 'SomeClass的。 ')负载(' proxy.php 页= google_uk ?');

在您的代理脚本中,当您请求google_uk时,请致电http://www,google.co.uk。如果有人试图通过传递URL或无效密钥来利用您的脚本,您可以返回403 http错误代码(未经授权)。

如果您只需要页面的某个部分,那么最好知道load方法也接受这样的css选择器:

$('。someclass')。load('proxy.php?page = google_uk div#search_form ');

希望这有帮助!