我只是想加载谷歌,在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函数。但没有成功。 一些建议请。
答案 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 ');
希望这有帮助!