以下是該場景。我爲一個網站使用ActionCable(我們稱之爲www.example.com
)。它在開發中非常完美,但是一旦我將它推到Heroku中,WebSocket連接就會出現302錯誤。ActionCable,Heroku自定義域名和Cookie
這個問題似乎源於我使用自定義域Heroku的事實。因此,如果我將WebSocket指向wss://example.com
,它會給我一個302,我假設它是因爲它被重定向到example.herokuapp.com
url?
所以鑑於這個問題,我不得不將WebSocket連接指向wss://example.herokuapp.com
。我現在遇到的問題是,因爲它基本上是我指向的新域,所以來自example.com的cookie不與example.herokuapp.com
共享。這意味着example.herokuapp.com
正在傳遞一個實際在example.com上設置的用於身份驗證的空cookie。
我通過記錄未簽名的cookie(只是暫時未簽名進行測試,不要錯過安全性),並在example.herokuapp.com
服務器上設置該cookie來驗證這是問題。之後,它工作得很漂亮。
很顯然,我不能一個人去這兩個網站只是設置一個該死的餅乾......
我會愛是找到一種方法來解決原來的問題,並能夠在指向網頁套接字我的自定義域爲wss://example.com
,無需擔心cookie簽名問題。這可能嗎?
如果不是,那麼在example.herokuapp.com
域上設置cookie的最佳方法是什麼?
P.S.是的,我看過其他關於ActionCable & Heroku的問題,但似乎沒有處理自定義域名。約一個cookie解決此一一談話,但我不覺得它會跟這種情況下工作,因爲他們是不一樣的子域:Deploying Ruby on Rails app to Heroku while using Action Cable (Puma port listening)
感謝您抽出寶貴時間來幫助我的傢伙:)
[編輯]這似乎非常相似,在這裏這個問題,但我發現了一個302而不是503 Heroku error 503, webSockets on multiple domains
什麼是解決這個?我遇到了類似的問題 – gwalshington