>백엔드 개발 >Golang >Go에서 실행 전 CORS 요청을 우아하게 처리하는 방법은 무엇입니까?

Go에서 실행 전 CORS 요청을 우아하게 처리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-03 08:51:40144검색

How to Elegantly Handle Preflight CORS Requests in Go?

Go에서 실행 전 CORS 요청 처리

Go 서버에서 사이트 간 HTTP 요청을 제공할 때 사용자 에이전트는 실행 전 OPTIONS 요청을 보낼 수 있습니다. 요청의 안전성을 확인합니다. 이 기사에서는 이러한 실행 전 요청을 우아하게 처리하고 응답하기 위한 모범 사례를 살펴봅니다.

전통적으로 net/http 패키지를 사용하면 처리기 함수에서 요청 메서드를 확인할 수 있습니다.

func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
  switch r.Method {
  case "OPTIONS":
    // handle preflight
  case "PUT":
    // respond to actual request
  }
}

또는 Gorilla의 mux 패키지를 사용하면 각 URL에 대해 별도의 프리플라이트 핸들러를 등록할 수 있습니다. 경로:

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")

이 프로세스를 단순화하려면 실행 전 요청을 처리하는 CORS 핸들러로 REST 핸들러를 래핑하는 것이 좋습니다. 예를 들어 net/http의 Handle 메소드를 사용하면 다음과 같습니다.

func corsHandler(h http.Handler) http.HandlerFunc {
  return func(w http.ResponseWriter, r *http.Request) {
    if (r.Method == "OPTIONS") {
      //handle preflight in here
    } else {
      h.ServeHTTP(w,r)
    }
  }
}

이 래퍼는 다음과 같이 사용할 수 있습니다.

http.Handle("/endpoint/", corsHandler(restHandler))

REST 핸들러를 래핑하면 로직을 분리하고 모든 관련 요청에 대한 CORS 핸들러로 더욱 우아하고 유지 관리가 쉬운 솔루션을 제공합니다.

위 내용은 Go에서 실행 전 CORS 요청을 우아하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.