記一次websocket連接時,前后端使用token鑒權,導致連接失敗的原因


前后端通過websocket通信,但是需要鑒權,可以利用websocket的子協議來傳輸token,代碼如下:

var ws = new WebSocket("ws://localhost/ws",[token]);

在后面加上[這里是token內容]。這樣請求頭就會攜帶:

Sec-WebSocket-Protocol:token value

參數是一個數組。如果數組有多個值,后端也會接受到逗號隔開的值。

后端可以獲取這個token進行鑒權。

重點來了!

如果傳遞了token參數,后端響應的時候,也必須帶上這個token響應!否則前端接收不到數據!

而后端的websocket如果在header里攜帶token呢?這里給出golang 的寫法:

var upgrader = websocket.Upgrader{
        Subprotocols: []string{r.Header.Get("Sec-WebSocket-Protocol")},
}        

通過這樣設置,前后端就可以攜帶token愉快的通信了。

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM