CORS 정책상 Access-Control-Allow-Origin은 1개만 등록이 가능합니다. Origin을 *로 할 경우 전 URL에 대해 허용이 가능하지만 아래와 같은 경우면 특정 URL을 지정해야 합니다.

c.Header("Access-Control-Allow-Credentials", "true")
c.Header("Access-Control-Allow-Origin", "*") // 에러 - Credentials이 true일 경우 특정 URL 1개만 허용


필자가 사용한 방법은 허용할 URL 리스트를 만든 다음, 요청된 URL이 해당 리스트에 맞는지 체크하는 형식으로 문제를 해결했습니다.

allowUrlList := []string{"http://foo.com", "http://bar.com", "http://zoo.com"}
var allowUrl string
for _, url := range allowUrlList {
if c.Request.Header.Get("Origin") == url {
allowUrl = url
break
}
}

c.Header("Access-Control-Allow-Headers", "Content-Type, Authorization, Origin")
c.Header("Access-Control-Allow-Credentials", "true")
c.Header("Access-Control-Allow-Origin", allowUrl)


+ Random Posts