Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses dan Mengubah Suai Badan Respons dalam Proksi Terbalik HTTPutil?

Bagaimana untuk Mengakses dan Mengubah Suai Badan Respons dalam Proksi Terbalik HTTPutil?

Barbara Streisand
Barbara Streisandasal
2024-11-12 14:49:02902semak imbas

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

Mengakses Badan Respons dalam Proksi Songsang dengan HTTPutil

HTTPutil menyediakan pelaksanaan proksi songsang yang berkuasa dalam Go. Walau bagaimanapun, ia tidak mempunyai fungsi asli untuk mengakses badan tindak balas. Artikel ini meneroka penyelesaian untuk mendapatkan semula badan respons dan mengubah suai menggunakan medan ModifyResponse dalam struct ReverseProxy.

Ikhtisar Proksi Balik HTTPutil

Dalam coretan kod yang disediakan, proksi terbalik dibuat menggunakan httputil.NewSingleHostReverseProxy. Proksi ini memajukan permintaan ke URL sasaran, www.google.com. Permintaan dikendalikan di titik akhir /google dan mendengar pada port 8099.

Dapatkan dan Ubah Suai Badan Respons

Untuk mengakses dan mengubah suai badan respons, kami menggunakan ModifyResponse medan dalam struct ReverseProxy. Medan ini menerima fungsi yang mengambil *http.Response pointer sebagai hujah dan mengembalikan ralat. Dalam fungsi ini, kita boleh membaca badan tindak balas menggunakan ioutil.ReadAll, tutup badan sedia ada, ubah suai kandungan badan dan tetapkan badan diubah suai semula ke dalam respons. Kod berikut menunjukkan perkara ini:

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
}

Dalam kod ini, kami membaca isi respons, menggantikan kandungan tertentu dalam kandungan dan mengemas kini isi dan pengepala dengan sewajarnya. Dengan memperuntukkan fungsi ini pada medan ModifyResponse, kami boleh memintas dan memanipulasi badan respons sebelum ia dihantar kepada klien.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses dan Mengubah Suai Badan Respons dalam Proksi Terbalik HTTPutil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn