http.ResponseWriterのメソッドHeader().Add()でヘッダーを追加したはずなのに、レスポンスのヘッダーを見ると付与されていない。
単純にw.Header().Addの前に、w.Writeを呼び出していたことが原因だった。順番を逆にすると、想定どおり動作する。
改修前
func(w http.ResponseWriter, _ *http.Request) {
w.Write([]byte("Hello, world"))
w.Header().Add("Access-Control-Allow-Origin", "http://localhost:3000")
w.Header().Add("Access-Control-Allow-Headers", "Content-Type, X-CSRF-Token")
w.Header().Add("Access-Control-Allow-Methods", "POST, OPTIONS")
w.Header().Add("Access-Control-Expose-Headers", "X-CSRF-Token")
w.Header().Add("Access-Control-Allow-Credentials", "true")
}
改修後
func(w http.ResponseWriter, _ *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", "http://localhost:3000")
w.Header().Add("Access-Control-Allow-Headers", "Content-Type, X-CSRF-Token")
w.Header().Add("Access-Control-Allow-Methods", "POST, OPTIONS")
w.Header().Add("Access-Control-Expose-Headers", "X-CSRF-Token")
w.Header().Add("Access-Control-Allow-Credentials", "true")
w.Write([]byte("Hello, world"))
}