> 백엔드 개발 > Golang > Go의 HTTP 클라이언트가 자동으로 리디렉션을 따르는 것을 어떻게 방지할 수 있나요?

Go의 HTTP 클라이언트가 자동으로 리디렉션을 따르는 것을 어떻게 방지할 수 있나요?

Linda Hamilton
풀어 주다: 2025-01-04 01:53:39
원래의
780명이 탐색했습니다.

How Can I Prevent Go's HTTP Client from Automatically Following Redirects?

Go HTTP 클라이언트를 활용하여 자동 리디렉션 비활성화

Go 프로그래밍에서 RESTful API 클라이언트를 구축할 때 HTTP 리디렉션 처리는 필수적입니다. 그러나 자동 리디렉션 처리가 바람직하지 않은 시나리오가 있습니다. 이 질문은 Go HTTP 클라이언트가 자동으로 리디렉션을 따르지 않도록 방지하는 대체 접근 방식을 탐구합니다.

질문에 제공된 초기 솔루션은 HTTP 리디렉션을 오류로 처리하도록 강제하는 CheckRedirect 기능의 사용자 정의 구현을 강조합니다. 기술적으로는 효과적이지만 리디렉션을 실패로 분류하는 것은 부자연스럽게 느껴집니다.

이 문제를 해결하기 위해 http.ErrUseLastResponse를 반환하도록 CheckRedirect 함수를 수정하는 더 우아한 솔루션이 제시됩니다. 오류 처리를 트리거하지 않으면 리디렉션을 수행해서는 안 된다는 HTTP 패키지에 대한 신호입니다.

업데이트된 코드는 다음과 같습니다.

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
로그인 후 복사

이 수정을 통해 HTTP 클라이언트는 리디렉션을 무시하고 본문에 여전히 접근 가능한 상태로 가장 최근 응답을 반환합니다. 소스 코드의 주석은 다음과 같이 명시합니다.

특수한 경우로 CheckRedirect가 ErrUseLastResponse를 반환하는 경우 가장 최근 응답은 nil 오류와 함께 본문이 닫히지 않은 상태로 반환됩니다.

결과적으로 스크립트 내에서 리디렉션을 수동으로 처리할 수 있어 HTTP 워크플로에 대한 더 큰 유연성과 제어력을 제공할 수 있습니다. 이 기술을 활용하면 원하는 수준의 사용자 정의를 유지하면서 리디렉션을 반환하는 REST API와 상호 작용할 수 있습니다.

위 내용은 Go의 HTTP 클라이언트가 자동으로 리디렉션을 따르는 것을 어떻게 방지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿