救命! Ajax没有获得外部页面内容?

时间:2010-03-08 02:13:00

标签: javascript jquery

我想提取由其他网站托管的网页的源代码,但问题是O得到一个空的回复,我试图拉出多个网站的来源,但问题来自我的代码:

$(document).ready(function(){
    $.get('http://www.xxxx.com', function(xdata) {
        alert("content: "+xdata);
    });
});

有任何错误吗?

注意:当我尝试获取本地页面的来源时,它可以工作,但我不知道为什么它不适用于外部页面

由于

7 个答案:

答案 0 :(得分:1)

根据Same Origin Policy

,这是不允许的

解决此问题的唯一方法是使用一些服务器端数据,然后使用您的AJAX请求处理,这称为Cross-Domain Proxy

答案 1 :(得分:0)

您无法跨域使用AJAX

答案 2 :(得分:0)

由于same origin policy

,您无法使用其他域中的包含

请查看JsonP

答案 3 :(得分:0)

Access-Control-Allow-Origin: *标头需要在外部网站上设置以进行跨域访问。

答案 4 :(得分:0)

由于SOP(原始政策相同),您无法使用其他域中的网址。尝试从本地服务器访问页面,不要使用http。

答案 5 :(得分:0)

如果您对构建自己的代理不感兴趣,可以使用JavaScript库,使用非常易于使用的公共代理(托管在AppEngine上)。 CurlJS:http://curljs.azoffdesign.com/

您的示例可以像这样完成(包括库之后):

curl("http://www.xxxx.com", function (status, xdata) {
  alert("content:" + xdata);
});

希望有所帮助!

答案 6 :(得分:0)

我有一台使用虚拟域的服务器并创建了一个apache代理。

超级快,有效,没有怪癖。

复制,修复路径(mod_proxy,域等等),添加到.conf文件,重启服务器

LoadModule proxy_module /usr/local/zend/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/local/zend/apache2/modules/mod_proxy_http.so
ProxyRequests Off
ProxyPreserveHost On 
ProxyPass /datadomain http://datadomain.com/webservices
ProxyPassReverse /datadomain http://datadomain.com/webservices

现在http://datadomain.com/webservices/data.php = http://yourdomain.com/datadomain/data.php

享受!!!