2010-11-19 54 views
2

我遇到了瀏覽器發送的JSONP和Cookie問題。Cookies和JSONP

其實我有兩個網站:server1和server2。我希望我的用戶對server1進行身份驗證,當他們訪問server2時,我想檢查它們是否通過身份驗證(通過對JSONP的Javascript JSONP調用)。

server1上的身份驗證由cookie管理,我認爲當通過JSONP對server1進行調用時,瀏覽器會發送cookie,然後身份驗證就會生效。但似乎瀏覽器(FF)在通過JSONP發送請求時不會將cookie發送到server1。

有誰知道瀏覽器在使用JSONP請求時是否發送cookie?如果不是這種情況,如果用戶通過server2在server1上進行身份驗證,那麼檢查Javascript的更好的解決方案是什麼?

謝謝您的回答,

文森特

+0

在server1頁面加載一個隱藏的Server2的iFrame,然後在iFrame中獲取所需的cookies等。通過Javascript將消息傳遞迴server1。 – 2010-11-19 09:02:07

回答

1

這取決於這些服務器的域名。如果它們是server1.example.comserver2.example.com,則可以設置Cookie以依賴域.example.com。然後將cookies發送到兩臺服務器。

如果你不能像我寫的那樣做,你將不得不做一些解決方法。例如通過iFrame。

0

我同意@Jakub所說的,並進一步解釋您的情況可能發生的情況。我假設你的域名爲server1.com和server2.com

因此,如果你要從server2.com上的應用程序設置一個cookie,並向server1.com上的應用程序發出JSONP請求server1.com,它會發送cookie,如果他們以前從server1.com設置。否則,它不會發送server2.com設置的任何cookie。實際上,瀏覽器從server2.com的應用程序向server1.com發出請求,該請求與server2.com完全相同,從CDN或任何其他服務器請求JavaScript文件。因此它不會發送任何server2.com cookie,否則它將成爲瀏覽器的重大安全問題。

希望它是有道理的。