2010-03-30 61 views
0

我有兩個網站 - 都是我的項目。在現場二,我需要檢查用戶是否在現場登錄。我想這樣做,我應該創建一個腳本,將cookie放入iframe的主體中,然後在第二個站點上讀取iframe的內容。但我不能。跨不同主機讀取餅乾

這裏是我的測試目的做出了代碼:
http://jsbin.com/oqaza/edit

我得到了一個錯誤,即說:

「權限遭拒, < http://jsbin.com>來獲得屬性 HTMLDocument.nodeType從 < http://www.google.com>「。

+0

這永遠不會那樣工作。只是想象一下ebay-iframe可以保存我的cookie數據,並且您可以從您的受控站點讀取這些數據。 猜你必須做這個服務器端。 – mana 2010-03-30 16:01:17

+0

這適用於堆棧溢出,用戶可以使用Google帳戶登錄。 – Thinker 2010-04-03 13:22:07

回答

0

我終於明白了。通常有像「OpenID」(即使在這裏使用SO)的解決方案,但我發現,JSONP是最簡單的方法來讀取跨域的Cookie :)

+0

你是如何完成這項工作的?我發現IE遇到的問題,即在發出JSONP請求時不會將cookie發送到其他域。 – 2011-03-15 20:31:32

1

iframe文檔受Same Origin Policy的約束 - 您無法從另一臺主機上的頁面訪問一臺主機上的內容。 AJAX請求也是如此。

對於現代瀏覽器,一種解決方案是Cross Document Messaging

0

正如其他人所提到的,由於安全問題,使用cookie並不是一個好的選擇。你可能通過將已登錄的用戶返回到其他站點,檢查cookie,並用指示狀態的查詢字符串將它們回傳到它們所在的頁面來做到這一點,但至少可以這麼說。

更好的方法是在site1上創建一個Web服務(或者MVC JsonResult,如果您使用.Net MVC),它可以響應來自site2的關於登錄狀態的AJAX請求。