Go HTTP 클라이언트에서 자동 리디렉션 비활성화
API 엔드포인트가 HTTP 302 리디렉션을 반환하면 Go HTTP 클라이언트는 자동으로 HTTP 리디렉션을 따릅니다. HTTP 위치 헤더. 이 동작은 나중에 처리하기 위해 HTTP 위치 헤더를 캡처해야 하는 경우와 같은 특정 시나리오에서는 바람직하지 않을 수 있습니다.
자동 리디렉션을 비활성화하는 일반적인 접근 방식에는 클라이언트의 CheckRedirect 기능을 재정의하는 것이 포함됩니다. 그러나 이 솔루션은 HTTP 리디렉션을 오류가 아닌 오류로 처리하므로 해킹처럼 느껴질 수 있습니다.
더 우아한 솔루션은 http.Transport를 사용하여 클라이언트 동작을 구성하는 것입니다.
import ( "net/http" ) // Create a custom round-trip transport transport := &http.Transport{ DisableKeepAlives: true, } // Create an HTTP client with the custom transport client := &http.Client{ Transport: transport, }
이 설정에서는 DisableKeepAlives 필드가 true로 설정되어 클라이언트가 지속적인 연결을 유지하지 못하게 하여 가로챌 필요가 없도록 합니다.
또는 다음 코드를 사용하여 리디렉션을 명시적으로 비활성화할 수 있습니다.
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
이 코드를 사용하면 HTTP 패키지는 리디렉션을 따라서는 안 된다는 것을 자동으로 인식하지만 리디렉션을 발생시키지 않습니다. 모든 오류. 이를 통해 복잡한 오류 처리에 의존하지 않고도 자동 리디렉션을 비활성화하면서 기본 인증으로 HTTP 요청을 할 수 있습니다.
위 내용은 Go HTTP 클라이언트에서 자동 리디렉션을 비활성화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!