나는 이러한 특성으로 HTTP 클라이언트를 사용하여 HTTP 호출을하고 싶습니다 :Golang : http 클라이언트가 리디렉션을 따르지 않도록 만드는 방법은 무엇입니까?
- 이 따르지 않는 리디렉션
- (단지 302 리디렉션 코드를 반환 첫 번째 통화의 전체 반응을 얻을) 쿠키 따라서
을받을 수있는, 차라리 내가 그걸 어떻게 할 수 trasport.RoundTrip
보다 http.Client
있는 솔루션을 찾고 있어요?
나는 이러한 특성으로 HTTP 클라이언트를 사용하여 HTTP 호출을하고 싶습니다 :Golang : http 클라이언트가 리디렉션을 따르지 않도록 만드는 방법은 무엇입니까?
을받을 수있는, 차라리 내가 그걸 어떻게 할 수 trasport.RoundTrip
보다 http.Client
있는 솔루션을 찾고 있어요?
http.Client
을 사용하는 경우 CheckRedirect
field을 사용할 수 있습니다.
이 필드는 초기 요청에 의해 오류가 수신되면 모든 리디렉션을 처리 할 수있는 사용자 지정 기능을 사용합니다.
client: &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return errors.New("something bad happened") // or maybe the error from the request
},
}
또한 닫히지 않은 몸으로 가장 최근의 응답을 반환 http.ErrUseLastResponse
error을 반환 할 수 :
간단한 예는 다음과 같이 될 수 있습니다.
위대한! 응답 302의 경우 리디렉션이 수행되지 않도록 모든 샘플 코드를 제공 할 수 있습니까? –
@DanieleB - 간단한 구현을 보여주기 위해 제 대답을 업데이트했습니다. – danbondd
고마워요,하지만 어떻게 사용해야하는지 잘 모르겠습니다. 내가 원한 것은 : 1) 클라이언트가 리다이렉트를 따라 가면 안된다. 2) 리디렉션 URL을 얻을 수 있습니다. 3) CookieJar가 정상적으로 작동합니다. –
쿠키를 저장하는 방법은 리디렉션 응답을 확인하는 방법과 완전히 별개입니다. – JimB
네, 그건 까다로운 부분입니다. HTTP 클라이언트 대신 transport.RoundTrip을 사용하여 단일 응답을 얻을 수 있지만 쿠키를 검색 할 수있는 솔루션을 찾고 있습니다. –
http.Client를 사용할 때 CookieJar가 작동하지 않지만 첫 번째 리디렉션에서 멈추는가? – JimB