问题描述
在尝试使用iris中的websocket搭建一个实时通讯聊天的demo时,出现一个Upgrade Error错误,一个跨域问题,网上说要修改golang中的websocket upgrader 配置,但是不知道从哪改起。最后在一个项目中看到了解决方案。
Upgrade Error: websocket: request origin not allowed by Upgrader.CheckOrigin
解决方案
重写gorilla的部分内容,在引入自己所创建的gorilla包
gorilla包目录结构:
- gorilla
- upgrader.go
- socket.go
upgrader.go 代码:
package gorilla
import (
"net/http"
"github.com/kataras/neffos"
gorilla "github.com/gorilla/websocket"
)
// DefaultUpgrader is a gorilla/websocket Upgrader with all fields set to the default values.
var DefaultUpgrader = Upgrader(gorilla.Upgrader{
// v12中的BUG
CheckOrigin: func(r *http.Request) bool {
return true
},
})
// Upgrader is a `neffos.Upgrader` type for the gorilla/websocket subprotocol implementation.
// Should be used on `New` to construct the neffos server.
func Upgrader(upgrader gorilla.Upgrader) neffos.Upgrader {
return func(w http.ResponseWriter, r *http.Request) (neffos.Socket, error) {
underline, err := upgrader.Upgrade(w, r, w.