I'm using Go gin framework gin
func CORSMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
c.Writer.Header().Set("Content-Type", "application/json")
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Max-Age", "86400")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, X-Max")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(200)
} else {
c.Next()
}
}
}
I've got Status Code:200 OK, but nothing happens after OPTIONS request. It looks like I miss something, but I can't understand where am I wrong.
Can anybody help me?
FWIW, this is my CORS Middleware that works for my needs.
There is an official gin cors plugin gin-contrib/cors. You should use it
There is also official gin's middleware for handling CORS requests github.com/gin-contrib/cors.
You could install it using
$ go get github.com/gin-contrib/cors
and then add this middleware in your application like this: package mainWe created a minimal middleware.
and register it with gin middleware :
There is package https://github.com/rs/cors, that handles CORS requests in the right way. It has the examples for the popular routers including
gin
. That it:In common case, you just add the default handling with
router.Use(cors.Default())
to your middlewares ingin
. It is enough.