2010-11-30 15 views
17

WebSocket接続をsocket.ioにハンドシェークするときに簡単に認証Cookieを渡す方法はありますか?私は現在、個別にそれを行うので、同様にする必要があります。WebSocket経由でsocket.ioに接続するときのクッキーの送信方法?

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に基づいているので、WebSocketを、クッキーをサポートしていないが、Socket.IOのソースを介して迅速なブラウズは、このためのサポートがないことを明らかにした

この場合、Cookieを直接使用することはできません。また、Socket.IOを使用しているため、ユーザーが実際にWebSocket経由で接続することは保証されません。

接続でフラッシュソケットが使用されている場合、ブラウザで独自のセットではなくブラウザのクッキーを送信するのは本当に難しいため、直接クッキーを送信してもブラウザで設定されませんフラスコソケット接続の場合。

現在のところ、Socket.IOに組み込まれているこの機能はサポートされていないため、フラッシュソケットは失敗するだけです。

this issueで読むことができます。ここにはflash cookie problemに関する質問があります。

ベストソリューションは依然として独自のプロトコルの一部にすることです。

+4

この問題は、今後のためにsocket.ioバージョン0.7以降で解決されています。 – Chris

+5

どのように対処されましたか?明確にすることはできますか? – Damian