Go语言 WebSocket每次返回403

qv7cva1a  于 2023-05-11  发布在  Go
关注(0)|答案(1)|浏览(165)

我不知道为什么这个错误不断发生,但当我尝试在我的网络浏览器连接失败,并返回403,但它没有意义,因为没有在我的代码中,我特别告诉它返回403,没有中间件涉及,我附上了一张图片的错误im得到。我也使用Gorilla WebSocket与杜松子酒,这里是我的代码,主机

func WebsocketServer(w http.ResponseWriter, r *http.Request, context *gin.Context) {
    fmt.Println("connection received")
    var upgrader2 = websocket.Upgrader{
        CheckOrigin: func(r *http.Request) bool {
            return true
        },
        EnableCompression: false,
    }
    db, err := aws.GetDB()
    if err != nil {
        helpers.Log.Println(err)
        return
    }
    defer db.Close()
    c, err := upgrader2.Upgrade(w, r, nil)
    if err != nil {
        helpers.Log.Println(err)
        return
    }

}
func PublicRoutes(c *gin.RouterGroup) {
    c.GET("/ws", func(c *gin.Context) {
        relay.WebsocketServer(c.Writer, c.Request, c)
    })
}

我使用AWS来托管这个,这是一个托管问题吗?
[GIN] 2023/05/07 - 22:18:49 | 403 | 18.344µs | 71.121.188.229 | GET "/ws"

q0qdq0h2

q0qdq0h21#

这个问题不再是一个问题,它似乎是一个问题与我的CORS?我通过将配置移到底部来修复它。我应该把这个代码放在我的第一个问题里
之前

router := gin.Default()
config2 := cors.DefaultConfig()
    config2.AllowOrigins = []string{"http://localhost:3000", "https://rblxfortune.vercel.app", "https://bloxbet.click", "http://localhost:80"}
    config2.AllowCredentials = true
    router.Use(cors.New(config2))

    HandleRoutes(router)
    public := router.Group("/")
    routes.PublicRoutes(public)
    router.NoRoute(func(c *gin.Context) {
        http.Redirect(c.Writer, c.Request, "/login", http.StatusMovedPermanently)
    })
    private := router.Group("/")
    private.Use(helpers.AuthRequired)
    routes.PrivateRoutes(private)
    
    err := router.Run(config.Port)
    if err != nil {
        log.Println(err)
    }

之后

router := gin.Default()

    HandleRoutes(router)
    public := router.Group("/")
    routes.PublicRoutes(public)
    router.NoRoute(func(c *gin.Context) {
        http.Redirect(c.Writer, c.Request, "/login", http.StatusMovedPermanently)
    })
    private := router.Group("/")
    private.Use(helpers.AuthRequired)
    routes.PrivateRoutes(private)
    config2 := cors.DefaultConfig()
    config2.AllowOrigins = []string{"http://localhost:3000", "https://rblxfortune.vercel.app", "https://bloxbet.click", "http://localhost:80"}
    config2.AllowCredentials = true
    router.Use(cors.New(config2))
    err := router.Run(config.Port)
    if err != nil {
        log.Println(err)
    }

相关问题