2014-04-04 119 views
0

我有一個加載外部頁面的iframe,需要記錄才能顯示我想要的內容。其實,如果我以正常的方式設置iframe,iframe會加載外部域登錄頁面。我實際上有這樣的事情:將Cookie設置爲iframe src

我需要做的是爲該來源設置一些cookie,以假裝我登錄的外部域。這可以完成(或者我認爲這可以完成)是根據請求設置登錄響應給我的cookies。

我實際上能夠得到這些cookie,但不知道如何將它們設置爲來自iframe的URL。

想法?

謝謝!

+0

您無法訪問第三方網站。想一想,你登錄到你的銀行/電子郵件和其他網站可以得到你的登錄信息?這很聰明嗎?如果你控制兩個域名,你可以做的事情。 – epascarello

+0

真正的想法..另一方面,我的流程是這樣的:我通過api「悄悄地」(未在任何視圖中顯示)以及用登錄給我的cookie登錄一個帳戶到另一個域我想要顯示我最近登錄的那個域名的某個頁面似乎對我來說並不那麼笨拙。 – FabKremer

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript – epascarello

回答

2

如果iframe位於單獨的域中,則無法通過其他域中的javascript直接訪問它,因此您將無法使用javascript將domain1直接轉移到domain2。

如果您控制兩個域中的代碼,則有一些解決方法。下面是一個使用一個地方登錄一個方法和登錄證書是通過URL參數傳遞:Cross Domain Login - How to login a user automatically when transferred from one domain to another

你可以想見,通過對第一域登錄,然後在iframe設置.src URL中使用的URL轉移機制在URL中擁有登錄憑證。當第二個域加載到iframe中時,它會在URL中看到登錄憑據,抓住它,將其變成它自己寫的cookie值和刷新本身(因此現在正在查看登錄)。您顯然需要在這兩個域中控制JavaScript以使用這些技術中的任何一種,因爲一個域的JavaScript無法直接將Cookie放入其他域。

兩個合作域可以通信的另一種方式是使用window.postMessage(),因此可以將登錄憑證發送到iframe窗口。這是JavaScript必須收到的消息,並將其變成一個cookie,然後刷新它的頁面,以便服務器在第二個域上看到登錄cookie。