2010-11-30 81 views
17

有沒有辦法握手一個WebSocket連接到socket.io時,容易通過身份驗證Cookie?我現在必須單獨做到這一點,就像這樣:如何通過WebSockets連接到socket.io時發送cookie?

socket = new io.Socket(document.location.hostname); 
socket.addEvent("connect", function() 
{ 
    // Send PHP session ID, which will be used to authenticate 
    var sessid = readCookie("PHPSESSID"); 
    this.send("{'action':'authenticate','sessionid':'"+sessid+"'}"); 
}); 

回答

24

,因爲它們是基於HTTP的WebSockets確實有餅乾的支持,但快速瀏覽Socket.IO的消息人士透露,有這種不支持內置的。

所以直接使用cookie是不是在這種情況下,一個可行的解決方案,同時,由於您使用的Socket.IO,它不能保證用戶實際上是通過一個連接的WebSocket。

在連接使用閃存套接字的情況下,真的很難讓Flash發送瀏覽器的Cookie而不是它自己的設置,所以即使您直接發送cookie,它也不會在瀏覽器中設置在燒瓶插座連接的情況下。

目前有此內置Socket.IO不支持,所以閃光燈插座只會失敗。

您可以在this issue瞭解這一點,這裏有一個關於flash cookie problem問題。

最好的解決辦法還是讓它自己的協議的一部分。

+4

只是爲了將來參考,這個問題一直在socket.io版本0.7及以上處理。 – Chris 2014-01-21 18:52:52

相關問題