我的域名:
<!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&lt;”。所以我从他们的域获得响应,但解析器期望它是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>
答案 0 :(得分:6)
有四种方法可以绕过Same Origin Policy
Access-Control-Allow-Origin
标题注意:在没有其他域帮助的情况下,仅方式是#1,通过您自己的服务器进行路由。
答案 1 :(得分:2)
同源策略,可防止跨域请求。如果你想要抓取HTML,你最好写一个服务器端进程来获取内容,然后使用ajax对服务器发出请求,其中包含收集的数据。
答案 2 :(得分:2)
Same Origin Policy阻止客户端脚本从不是来自请求的发起者的域获取数据。您需要服务器端脚本作为代理
答案 3 :(得分:0)
一种解决方法是制作服务器端脚本(例如PHP)来获取页面,并$.ajax
调用该页面。