>백엔드 개발 >Golang >Go HTTP 클라이언트에서 자동 리디렉션을 비활성화하는 방법은 무엇입니까?

Go HTTP 클라이언트에서 자동 리디렉션을 비활성화하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 05:42:44526검색

How to Disable Automatic Redirects in the Go HTTP Client?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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