2011-10-26 42 views
7

我有一個Rails應用程序,它作爲iframe在Fabebook內部運行。我使用Koala gem進行FB通信(也是某些部件的js SDK)和Devise作爲身份驗證的基礎。Facebook應用程序(iframes)和第三方cookie

一段時間以來,我發現應用程序在iframe中運行的問題存在一些問題。所以第三方cookies不能設置。對於IE我使用P3P標題,以某種方式緩解了這個問題。

但是整件事情非常混亂。我在雪豹。

例如:

  • 的Safari 5.1.1我已經設置 「阻止來自第三方和廣告商的cookie。」 該應用程序工作正常,它可以使用沒有問題。

  • 使用Chrome 5.0.874(最近更新)選中「阻止第三方Cookie被設置」選項,因此我的應用程序設置的兩個主要Cookie(應用程序cookie和fbs_xxxx cookie)無法設置,因此應用程序不起作用,因爲用戶需要始終進行身份驗證。

  • Opera 11.52沒有提及第三方cookies,並且瀏覽器設置爲「僅接受來自我訪問的網站的cookie」。我的應用程序適用於該設置。

  • 隨着Firefox 7.0.1我的應用程序的工作原理,但我找不到任何設置,處理Cookie。只是要刪除它們。

所以顯然我的問題是與Chrome,但相同的設置與Safari的工作。所以我很困惑。

是否要求用戶允許第三方cookie解決此問題的唯一解決方案?

謝謝。

UPDATE在我的當前工作液

我做了一些額外的研究和測試。我曾嘗試使用Rails替代會話存儲方法。默認情況下,它們存儲在一個cookie中,但可以將會話數據存儲在內存,數據庫等中,但這還不夠,因爲它仍然使用一個cookie來指向您選擇的替代存儲。

最後,我設置了一些信息,使我可以找到當前登錄用戶的身份,獲取用戶並使用Devises sign_in方法手動登錄該用戶。我不太喜歡它,但現在我可以阻止第三方Cookie並仍然有效。我稍後將進行更改,而不是在那裏獲得真正的信息,我將從中獲取用戶(之前已設置)的密鑰,然後才能訪問該memcached服務器。

謝謝。

回答

2

如果無法設置Cookie,請在網址末尾設置會話ID。

+3

能否請您以實例闡明這一點,謝謝。 –

1

Firefox有一個相當不直觀的cookie設置位置。轉到工具 - >選項 - >隱私,然後從下拉框中選擇「使用自定義歷史記錄設置」,然後會出現Cookie設置。但是如果你將它們設置爲默認值,它們將會「消失」。

有在定義和第三方的cookies的處理(例如在Firefox中禁止不僅是設置cookie,而且閱讀它們)都大不一致。出於這個原因,我會建議,如果可能的話,消除任何依賴cookies。它已經夠難告訴用戶他們必須使一些聽起來不安全的(更不用說提供關於如何做到這一點對每個瀏覽器都不同的指令),它只是變得更糟爲瀏覽器繼續收緊它們的默認設置。不幸的是所有的標準庫似乎想要默認使用的cookies,所以它不是一件容易的事,但如果你是剛開始你的應用程序中,我認爲這將是值得的,試圖找到正確的做事關的cookie的方法蝙蝠。

+0

弗洛伊德和德里克,感謝您的意見。在url中設置會話ID是不安全的,Rails根本不推薦這樣做。但Rails提供了存儲會話信息的其他地方。上次我試過了,因爲它需要一個cookie,所以我在設計方面遇到了問題,但我應該再試一次。是的,現在我發現了餅乾設置在FF謝謝!這很好隱藏。 – Pod