通过jQuery / AJAX抓取外部URL的HTML

时间:2011-02-24 20:06:25

标签: jquery ajax same-origin-policy

我需要通过jQuery / AJAX从外部URL获取特定的DOM元素(通过ID)。我知道这违反了相同的原始策略,但是当我专门抓取HTML(而不是JSON)时,我找不到可接受的解决方法。

所以说,例如,我在website1.com上,我需要抓取并输出website2.com的#something元素的内容。我怎么能用jQuery做到这一点?

编辑:似乎是Why cant I load an external resource from jQuery load method?的副本,它有一个很好的答案。

2 个答案:

答案 0 :(得分:1)

(回答我自己的问题):

请注意,由于源策略相同,因此在浏览器中无法进行此操作。为了解决这个问题(如Pekka在上面的评论中所说),您通常会创建所需内容的本地代理。因此,如果您正在使用website.com,并且需要获取google.com的一部分,那么您可以通过某些服务器端代码创建仅通过google.com克隆的website.com/google。然后你可以自由地做任何你想做的事情,因为它在你的领域。

我正在处理的问题是我正在开发一个BlackBerry WebWorks项目,这意味着我只限于HTML / CSS / JS,而我实际上并不是 on 一个网站,所以代理是不可能的。幸运的是,WebWorks允许您向您创建的每个应用添加受信任的域,这意味着相同的源策略不适用于这些域。

答案 1 :(得分:0)

假。只要服务器支持JSONP,策略就不是绝对的。谷歌JSONP Jquery,你会看到大量的工作示例做你想做的事情:通过ajax从你自己的域返回webservice数据。