Wie greife ich auf den Antworttext in einem HTTPutil-Reverse-Proxy zu und ändere ihn?

Barbara Streisand
Freigeben: 2024-11-12 14:49:02
Original
900 Leute haben es durchsucht

How to Access and Modify Response Body in an HTTPutil Reverse Proxy?

Zugriff auf den Antworttext im Reverse-Proxy mit HTTPutil

HTTPutil bietet eine leistungsstarke Reverse-Proxy-Implementierung in Go. Es fehlt jedoch die native Funktionalität für den Zugriff auf den Antworttext. In diesem Artikel wird eine Lösung zum Abrufen des Antworttexts und zum Ändern desselben mithilfe des Felds ModifyResponse in der ReverseProxy-Struktur untersucht.

HTTPutil Reverse Proxy Overview

Im bereitgestellten Codeausschnitt wird mithilfe von httputil.NewSingleHostReverseProxy ein Reverse-Proxy erstellt. Dieser Proxy leitet Anfragen an die Ziel-URL www.google.com weiter. Die Anfrage wird am /google-Endpunkt verarbeitet und überwacht Port 8099.

Antworttext abrufen und ändern

Um auf den Antworttext zuzugreifen und ihn zu ändern, verwenden wir ModifyResponse-Feld in der ReverseProxy-Struktur. Dieses Feld akzeptiert eine Funktion, die einen *http.Response-Zeiger als Argument akzeptiert und einen Fehler zurückgibt. Innerhalb dieser Funktion können wir den Antworttext mit ioutil.ReadAll lesen, den vorhandenen Text schließen, den Textinhalt ändern und den geänderten Text wieder in die Antwort einfügen. Der folgende Code demonstriert dies:

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
}
Nach dem Login kopieren

In diesem Code lesen wir den Antworttext, ersetzen bestimmte Inhalte im Text und aktualisieren den Text und die Header entsprechend. Indem wir diese Funktion dem Feld ModifyResponse zuweisen, können wir den Antworttext abfangen und manipulieren, bevor er an den Client gesendet wird.

Das obige ist der detaillierte Inhalt vonWie greife ich auf den Antworttext in einem HTTPutil-Reverse-Proxy zu und ändere ihn?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage