728x90
반응형
기존
- 기존에는 직접 CORS 체크 미들웨어를 작성해 사용했다.
func CorsMiddlewares(next http.Handler) http.Handler {
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
origin := req.Header.Get("Origin")
if origin == "" {
origin = "unknown"
}
for _, o := range originList {
if o == origin {
log.Printf("Allowed Origin: %s", origin)
res.Header().Set("Access-Control-Allow-Origin", origin)
res.Header().Set("Access-Control-Max-Age", "86400")
res.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
res.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
res.Header().Set("Access-Control-Allow-Credentials", "true")
break
}
}
// Handle preflight request
if req.Method == http.MethodOptions {
res.WriteHeader(http.StatusOK)
return
}
next.ServeHTTP(res, req)
})
}
변경
- 그러나 조금 더 심플하고 편하게 설정할 수 있는 패키지가 있어 가져와 사용했다.
get -u github.com/rs/cors
- 이후 세팅은 이렇게 된다.
func CorsHanlder() *cors.Cors {
corHandler := cors.New(cors.Options{
AllowedOrigins: originList,
AllowedMethods: []string{http.MethodGet, http.MethodPost, http.MethodOptions},
AllowedHeaders: []string{"Origin", "Accept", "Content-Type", "Authorization"},
AllowCredentials: true,
MaxAge: 86400,
Debug: false,
})
return corHandler
}
미들웨어 등록하기
- 현재 표준 라이브러리인 net/http 에서 gorilla/mux 로 변경한 상태이다.
func OpenServer() *http.Server {
router := mux.NewRouter()
routers.DefaultRouter(router)
routers.UploadImageController(router)
routers.AdminUserRouter(router)
routers.AdminPostRouter(router)
routers.UserRouter(router)
routers.PostRouter(router)
router.Use(middlewares.AuthMiddleware)
// CORS 핸들러
handler := middlewares.CorsHanlder().Handler(router)
// 기존 방식
// handler := middlewares.CorsMiddlewares(router)
serving := &http.Server{
Handler: handler,
Addr: configs.GlobalConfig.AppHost,
WriteTimeout: 30 * time.Second,
ReadTimeout: 30 * time.Second,
}
return serving
}
728x90
반응형
'백엔드 Backend > Golang' 카테고리의 다른 글
[AUTH] Cookie를 이용한 검증 (0) | 2025.01.21 |
---|---|
[Golang] DB 쿼리 nullable 데이터 처리 (0) | 2025.01.10 |
[gRPC] Go 언어로 gRPC 사용해보기 (2) | 2024.12.24 |
[Neo4J] 데이터 핸들링하기 (1) | 2024.12.09 |
[Neo4j] Golang 으로 쿼리 핸들링 (0) | 2024.12.06 |