關於 Flutter Websocket 跨域問題

websocket 服務已經是非常熟悉的東西了,但是今天仍然被一個問題困了很久。

主要是在Websocket 跨域的問題上。

今天在本地用golang的官方包寫了一個簡單的websocket server,寫完後通過瀏覽器執行js的方式測試OK,然後打算把flutter也接上。

可是在flutter上通過 WebSocket.connect的時候,一直提示錯誤。

 WebSocketException: Connection to 'http://127.0.0.1:9998/ws#' was not upgraded to websocket

在檢查了flutter中的websocket的發起請求和配置多次後,開始通過charles抓包,發現http請求是成功的,但是upgrade失敗了,http狀態碼是403。

可是golang的webserver 沒有更多的錯誤提示,在對比了Flutter和 browser 發起的request後,發現Flutter的request header缺少了 Origin參數, 而 Origin 是標識請求所在域的參數,考慮可能是跨域問題,在Flutter 中增加 header 參數Origin後則請求正常。

除此之外,目前沒有發現在golang server中對websocket response header設置的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章