HTTP 요청에서 리디렉션 후 최종 URL 검색
http.NewRequest를 활용하여 HTTP 요청을 시작할 때 다음을 추출해야 할 수 있습니다. 클라이언트에서 리디렉션이 발생하는 경우에도 최종 URL에서 문자열을 쿼리합니다. 그러나 응답 객체에서는 이 정보를 쉽게 찾을 수 없을 수도 있습니다.
해결책:
최종 URL을 얻는 한 가지 접근 방식은 CheckRedirect 내에서 익명 기능을 사용하는 것입니다. http.Client 구조체의 필드입니다. 이 익명 함수는 요청의 URL을 캡처하기 위해 각 리디렉션 전에 실행되는 콜백 역할을 합니다.
예:
import ( "errors" "fmt" "io" "log" "net/http" ) func main() { req, err := http.NewRequest("GET", "https://example.com/path", nil) if err != nil { log.Fatal(err) } cl := http.Client{} var lastUrlQuery string // Custom CheckRedirect function to capture the final URL before each redirect 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 { log.Fatal(err) } defer resp.Body.Close() // Use the lastUrlQuery variable to access the final URL after any redirects fmt.Printf("Last URL Query: %s\n", lastUrlQuery) // Read the response body for further processing io.Copy(io.Discard, resp.Body) }
이 스크립트에서는 익명 함수가 CheckRedirect에 할당됩니다. http.Client의 필드입니다. 이 익명 함수는 각 리디렉션이 발생하기 전에 lastUrlQuery 변수를 요청의 URL로 설정합니다. 결과적으로 리디렉션이 발생한 후 요청의 최종 URL을 검색할 수 있습니다.
위 내용은 Go에서 HTTP 리디렉션 후 최종 URL을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!