【Go言語/Gin】CORS対策

Gin

以下のようにします。

routeの設定より前でやらないと設定が反映されなくて嵌ったので注意

package server

import (
	"time"

	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
)

func Init() {
	r := router()
	r.Run()
}

func router() *gin.Engine {
	r := gin.Default()
	// r.Use(cors.Default()) // すべてのオリジンを許可
	setCors(r)

	u := r.Group("/users")
	{
		ctrl := controllers.UserController{}
		u.GET("", ctrl.Index)
		u.POST("", ctrl.Create)
		u.GET("/:id", ctrl.Show)
		u.PUT("/:id", ctrl.Update)
		u.DELETE("/:id", ctrl.Delete)
	}

	return r
}

func setCors(r *gin.Engine) {
	r.Use(cors.New(cors.Config{
		AllowOrigins:     []string{"http://localhost:3000"},
		AllowMethods:     []string{"PUT", "PATCH"},
		AllowHeaders:     []string{"Content-Type"},
		ExposeHeaders:    []string{"Content-Length"},
		AllowCredentials: true,
		MaxAge:           12 * time.Hour,
	}))
}
この記事を書いた人

15歳からプログラミングを始め、現在は正社員+個人事業主でほぼ休まず労働
2018年に開発したアプリ「LIVLE」がTwitterで12000RTされる。(過去の栄光)
Flutter / Nuxt.js / Laravel / Go / React
お仕事依頼はこちらから⇢engineer@tepci.me

Tenma Endouをフォローする
GinGo言語プログラミング
Tenma Endouをフォローする
目に優しいエンジニアブログ

コメント