为了账号安全,请及时绑定邮箱和手机立即绑定

在一个端口上使用 CORS 和 Socket.io HTTP + WSS?

在一个端口上使用 CORS 和 Socket.io HTTP + WSS?

Go
慕容森 2021-09-10 17:33:06
全新的 Go .. 显然仍在学习语法和基础知识.. 但我确实有一个特定的目标..我试图在 :8080 上建立一个简单的服务器,它可以响应 HTTP 和 socket.io(通过/socket.io/url),特别是 CORS。我的代码:package mainimport (     "log"              "net/http"     "github.com/rs/cors"     "github.com/googollee/go-socket.io" ) func SayHelloWorld(w http.ResponseWriter, r *http.Request) {     w.Write([]byte("Hello, World!")) } func main() {   c := cors.New(cors.Options{         AllowedOrigins: []string{"*"},         AllowCredentials: true,   })   server, err := socketio.NewServer(nil)     if err != nil {         log.Fatal(err)     }   server.On("connection", func(so socketio.Socket) {      log.Println("on connection")      so.Join("chat")      so.On("chat message", func(msg string) {          log.Println("emit:", so.Emit("chat message", msg))          so.BroadcastTo("chat", "chat message", msg)      })      so.On("disconnection", func() {          log.Println("on disconnect")      })   })   server.On("error", func(so socketio.Socket, err error) {      log.Println("error:", err)   })       http.Handle("/socket.io/", c.Handler(server))   http.HandleFunc("/", SayHelloWorld)   log.Println("Serving at localhost:8080...")   log.Fatal(http.ListenAndServe(":8080", nil))}在客户端,我仍然看到:与“wss://api.domain.com/socket.io/?EIO=3&transport=websocket&sid=xNWd9aZvwDnZOrXkOBaC”的 WebSocket 连接失败:在建立连接之前 WebSocket 已关闭。(index):1 XMLHttpRequest 无法加载https://api.domain.com/socket.io/?EIO=3&transport=polling&t=1420662449235-3932&sid=xNWd9aZvwDnZOrXkOBaC。请求的资源上不存在“Access-Control-Allow-Origin”标头。Origin ' http://fiddle.jshell.net ' 因此不允许访问。编辑#1:所以我一直在努力理解为什么我无法连接.. 遇到了一个更令人困惑的难题?https://gist.github.com/acoyfellow/167b055da85248c94fc4上面的gist是我的golang服务器的代码+用于连接的浏览器代码..这段代码每秒会向后端发送30个HTTP GET请求,没有连接、升级或给出任何错误(客户端或服务器端)。它本质上是我自己的 DDOS 后端?有人,请有人告诉我我在做一些愚蠢的事情..这真是泡菜:P
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

你不是说http+ws还是https+wss。如果您从 wss 中删除 as,您应该能够连接。

如果你想要网络套接字的 tls (wss),那么你需要 http.ListenAndServeTLS。


查看完整回答
反对 回复 2021-09-10
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

CORS 似乎不适用于 WebSockets。根据这个相关问题“使用 WebSocket,有一个“原点”标头,浏览器必须填充包含打开 WS 连接的 JS 的 HTML 的原点。

查看完整回答
反对 回复 2021-09-10
  • 3 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信