HTTPutil을 사용하여 역방향 프록시의 응답 본문에 액세스
HTTPutil은 Go에서 강력한 역방향 프록시 구현을 제공합니다. 그러나 응답 본문에 액세스하는 기본 기능이 부족합니다. 이 기사에서는 ReverseProxy 구조체의 ModifyResponse 필드를 사용하여 응답 본문을 검색하고 수정하는 솔루션을 살펴봅니다.
HTTPutil Reverse Proxy 개요
제공된 코드 조각에서 역방향 프록시는 다음을 사용하여 생성됩니다. httputil.NewSingleHostReverseProxy. 이 프록시는 요청을 대상 URL인 www.google.com으로 전달합니다. 요청은 /google 엔드포인트에서 처리되며 포트 8099에서 수신됩니다.
응답 본문 검색 및 수정
응답 본문에 액세스하고 수정하려면 ModifyResponse 필드. 이 필드는 *http.Response 포인터를 인수로 사용하고 오류를 반환하는 함수를 허용합니다. 이 함수 내에서 ioutil.ReadAll을 사용하여 응답 본문을 읽고, 기존 본문을 닫고, 본문 내용을 수정하고, 수정된 본문을 다시 응답에 설정할 수 있습니다. 다음 코드는 이를 보여줍니다.
func rewriteBody(resp *http.Response) (err error) { b, err := ioutil.ReadAll(resp.Body) if err != nil { return err } err = resp.Body.Close() if err != nil { return err } b = bytes.Replace(b, []byte("server"), []byte("schmerver"), -1) body := ioutil.NopCloser(bytes.NewReader(b)) resp.Body = body resp.ContentLength = int64(len(b)) resp.Header.Set("Content-Length", strconv.Itoa(len(b))) return nil }
ModifyResponse 필드에 이 기능을 할당하면 응답 본문이 클라이언트에 전송되기 전에 가로채서 조작할 수 있습니다.
위 내용은 HTTPutil 역방향 프록시에서 응답 본문에 액세스하고 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!