ググっても意外と出てこなくて焦ったのでメモ。
github.com/go-chi/cors
を使う。
package main
import (
"net/http"
"os"
"github.com/go-chi/chi"
"github.com/go-chi/cors"
)
func main() {
r := chi.NewRouter()
r.Use(cors.Handler(cors.Options{
AllowedOrigins: []string{"*"}}))
r.Get("/", pingHandler)
http.ListenAndServe(":9999", r)
}
このように指定するだけ。ローカルでテストする際は問題ないが、本来は * を指定するのは避けたほうが良い。
curl での動作確認は以下のようなコマンドを打つと良い。Access-Control-Allow-Origin ヘッダに * が入っていることが確認できれば成功。
$ curl -i 'http://localhost:9999/' -H 'Origin: https://hogefuga:123'
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Vary: Origin
Date: Tue, 30 May 2023 12:08:25 GMT
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Hello World!
もしくは、-D
を使っても良い。
curl -D - localhost:9999 -H 'Origin: https://hogefuga:123'
ここでは、-H
を使って Origin を指定しなければ Access-Control-Allow-Origin が表示されないことに注意する。