jquery – 是什么阻止我使用$.ajax加载另一个域的html?

前端之家收集整理的这篇文章主要介绍了jquery – 是什么阻止我使用$.ajax加载另一个域的html?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的域名:
<!DOCTYPE html>  
<html>
<head>
<title>scrape</title>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
</head>
<body>
    <script>
        $.ajax({url:'http://their-domain.com/index.html',dataType:'html',success:function(data){console.log(data);}
        });
    </script>
</body>
</html>

什么阻止我能够刮掉他们的域名?有什么工作吗?

附录:感谢大家使用服务器端脚本的建议,但我目前只对使用客户端解决此问题感兴趣.

如果我使用“jsonp”格式化请求,我至少会得到一个响应,但是出现以下错误:“Uncaught SyntaxError:Unexpected token<”.所以我从他们的域获得响应,但解析器期望它是json. (它也应该.)我正在通过这个试图看看它们是否是一种诱骗客户接受这种反应的方法.请理解我知道这是非典型的.

<!DOCTYPE html>  
<html>
<head>
<title>scrape</title>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
</head>
<body>
    <script>
        $.ajax({url:'http://their-domain.com/index.html',dataType:'jsonp',success:function(data){console.log(data);}
        });
    </script>
</body>
</html>

解决方法

有四种方法可以绕过 Same Origin Policy

>代理 – 您从服务器请求它,您的服务器从其他域请求它,您的服务器将其返回到浏览器
> Flash cross domain policy – 其他域必须将crossdomain.xml文件添加到其站点
> Cross domain HTTP header – 其他域必须在其页面添加Access-Control-Allow-Origin标头
> JSONP – 这是一个提供回调功能的json Web服务.其他域必须实现此目的.

注意:在没有其他域帮助的情况下执行此操作的唯一方法是#1,通过您自己的服务器进行路由.

猜你在找的jQuery相关文章