2011-02-24 43 views
0

我需要通過jQuery/AJAX從外部URL獲取特定的DOM元素(通過ID)。我知道這違反了相同的原產地政策,但我無法找到一個可接受的解決方法,因爲我特別抓取HTML(而不是JSON)。通過jQuery/AJAX獲取外部URL的HTML

舉例來說,我在website1.com上,我需要抓取並輸出website2.com #something元素的內容。我如何使用jQuery來做到這一點?

編輯:似乎是Why cant I load an external resource from jQuery load method?它有一個很好的答案的副本。

+2

你不能。您需要一個服務器端代理腳本來爲您提取HTML。 – 2011-02-24 20:10:25

+0

@皮卡,所以,例如,如果我在移動設備上工作,因此僅限於HTML/CSS/JS,那麼這是不可能的? – 2011-02-24 20:12:00

+1

是。同源政策是絕對的 - 它必須是爲了防止安全問題 – 2011-02-24 20:12:46

回答

1

(回答我的問題):

請注意,這是不可能的,因爲瀏覽器的同源策略的。爲了解決這個問題(就像Pekka在上面的評論中所說的那樣),你通常會創建一個所需內容的本地代理。所以,如果您正在使用website.com,並且您需要獲取google.com的一部分,則可以創建website.com/google,它只是通過某些服務器端代碼對google.com進行克隆。然後,你可以自由地做任何你想做的事情,因爲它在你的域名上。

我正在處理美中不足的是,我的工作在BlackBerry WebWorks的項目,這意味着我僅限於HTML/CSS/JS,我沒有實際一個網站,讓代理是不可能的。幸運的是,WebWorks允許您爲每個創建的應用程序添加受信任的域,這意味着相同的源策略不適用於這些域。

0

假。只要服務器支持JSONP,策略並不是絕對的。谷歌JSONP Jquery,你會看到很多正在做你想做的事情的例子:通過ajax從一個域以外的域返回web服務數據。