2011-09-30 109 views
0

嗨我有一個項目在這裏工作,我們需要從另一個域的特定值我無權更改(所以我不能做嵌套iframes或CORS)。我們需要保持會話/ Cookie狀態相同,以根據頁面上的用戶更改標記來從頁面獲取所需的數據。所以服務器端解決方案將無法工作。跨域 - 檢索頁面源

什麼是最好的方式去做到這一點,以下是頁面源代碼的完整內容。 我需要檢索FF321332值

{"<!--":"","token":"FF321332","expire":1317448445,"":"--><body onload=document.body.innerHTML=clear>"} 

有些事情到目前爲止,我已經試過是動態腳本標記「它拋出一個JS錯誤的意外標記:錯誤是,jQuery(.getScript),這將引發同樣的錯誤,任何其他形式的.get或xhr會拋出一個跨域錯誤。

我覺得我在.getScript或動態腳本標記的正確軌道上,因爲它幾乎要讀取它。但如果我可以繞過意外的令牌錯誤,並以文本形式讀取它(如果這是可能的話),我可以將該變量解析爲普通文本。任何援助在此將不勝感激。

回答

1

JSONP允許你做你想做的事情。查看關於如何使.get使用JSONP來跨瀏覽器跨域強制執行的jQuery文檔。

基本上,當你做$ .getJSON時,如果url有一段說「callback =」+其他的東西,那麼它會把它當作jsonp而不是標準的getjson。

祝你好運。

+0

http://api.jquery.com/jQuery.getJSON/ – frosty

+0

yeh我忘了在我的帖子中提到我也試過這個,它基本上拋出了同樣的「Unexpected token:」錯誤,即.getScript和動態腳本標籤做。它似乎試圖將其作爲腳本運行。 $ .getJSON(url,function(json){ alert(「JSON DATA:」+ json); }); 我可以設置一個我正在尋找的頁面的模擬,我可以真正給出確切的頁面,由於公司的政策 –

+0

讓我一個jsfiddle如果你可以看到它。 – frosty

0

不要以爲你可以使用腳本標記來獲取錯誤,因爲通常情況下,一旦src屬性中指定的「javascript」被下載,它也會被執行。你說你不能使用服務器端解決方案,因爲你需要保持狀態?

那麼你可以使用捲曲和餅乾罐來做到這一點。從來沒有嘗試過,但理論上它應該工作: 基本上所有你需要做的是設置一個curl請求到遠程域接受cookie並將它們存儲在一個文件(cookie jar)中,然後做第二個請求來獲取頁面沿着之前獲得的cookies傳遞。

試一試,也許它會工作。