Http.Go에서 최종 URL 검색
리디렉션을 포함하여 일련의 HTTP 요청 후에 최종 URL을 어떻게 추출합니까? 제공된 코드는 http.NewRequest를 사용하여 요청을 시작하지만 응답 객체에는 최종 URL에 대한 필드가 포함되어 있지 않습니다.
해결책:
한 가지 접근 방식은 다음과 같습니다. 익명 기능과 http.Client.CheckRedirect를 활용합니다. 사용자 정의 CheckRedirect 기능을 정의하면 리디렉션 전 마지막 URL 쿼리를 캡처할 수 있습니다. 예는 다음과 같습니다.
import ( "fmt" "io" "net/http" ) func main() { req, err := http.NewRequest("GET", "https://example.com", nil) if err != nil { // Handle error } cl := http.Client{} var lastUrlQuery string cl.CheckRedirect = func(req *http.Request, via []*http.Request) error { if len(via) > 10 { return errors.New("too many redirects") } lastUrlQuery = req.URL.RequestURI() return nil } resp, err := cl.Do(req) if err != nil { // Handle error } io.Copy(io.Discard, resp.Body) fmt.Printf("Last URL query: %s\n", lastUrlQuery) }
이 코드에서 lastUrlQuery는 각 리디렉션 전에 URL 쿼리를 캡처합니다. 리디렉션 체인이 완료되거나 제한(예제에서는 10으로 설정)에 도달하면 최종 URL 쿼리가 lastUrlQuery에 저장됩니다.
위 내용은 Go에서 HTTP 리디렉션 후 최종 URL을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!