環境
- Go
- Gin
- dep
CORS (Cross-Origin Resource Sharing )
javascript などで API を叩く時に下記のようなエラーが出る場合のサーバーサイド側の対応。
Access to XMLHttpRequest at 'http://api.sample.com' from origin 'http://sample.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
やること
- サーバーサイド側で header 情報に色々追加する。
- どの言語の API でもやることは同じ。
- Access-Control-Allow-Origin に色々書いていく。
- どの言語の API でもやることは同じ。
- Gin には簡単にセットできる gin-contrib/cors が用意されている。
Gin の CORS 対応
パッケージのインストール
$ dep ensure -add github.com/gin-contrib/cors
CORS 対応
- http://sample.com を許可する
- 細かい設定は色々あるが、最低限これだけで動く。
package main
import (
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// CORS 対応
config := cors.DefaultConfig()
config.AllowOrigins = []string{"http://sample.com"}
r.Use(cors.New(config))
// CORS 対応の後にルーティングを書かないとうまく動かない
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run()
}