我的域名:
<!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,通过您自己的服务器进行路由.