CORS problems
Closed this issue · 2 comments
jolee11 commented
In order to run swagger-ui with API test, I have to enable CORS.
Now, I add code in each EndPoint. eg.:
func GetPersonEndpoint(handler func(ctx *gin.Context, params *GetPersonParams) *api.Response) gin.HandlerFunc {
return func(ctx *gin.Context) {
//------------------------- BEGIN: ADDED CODE ------------------------
ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*")
ctx.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
ctx.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
ctx.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE")
if ctx.Request.Method == "OPTIONS" {
ctx.AbortWithStatus(204)
return
}
ctx.Next()
//------------------------- END: ADDED CODE ------------------------
//.......................
}
}
I tried https://github.com/gin-contrib/cors but did not success!
Is there any better solution for this situation?
Thank you very much in advance!
Best regards,
jo
amtsing commented
package main
import (
"log"
"time"
"github.com/mikkeloscar/gin-swagger/example/restapi"
"github.com/gin-contrib/cors"
)
func main() {
var apiConfig restapi.Config
err := apiConfig.WithDefaultFlags().Parse()
if err != nil {
log.Fatal(err)
}
svc := &ExampleService{Health: false}
api := restapi.NewServer(svc, &apiConfig)
api.Routes.Use(cors.New(cors.Config{
AllowOrigins: []string{"https://foo.com"},
AllowMethods: []string{"PUT", "PATCH"},
AllowHeaders: []string{"Origin"},
ExposeHeaders: []string{"Content-Length"},
AllowCredentials: true,
AllowOriginFunc: func(origin string) bool {
return origin == "https://github.com"
},
MaxAge: 12 * time.Hour,
}))
err = api.RunWithSigHandler()
if err != nil {
log.Fatal(err)
}
}
mikkeloscar commented
Thanks for providing a full example. Will close this as solved.