Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memeriksa dan Memelihara Badan Permintaan HTTP untuk Pengendalian Proksi Songsang?

Bagaimanakah Saya Boleh Memeriksa dan Memelihara Badan Permintaan HTTP untuk Pengendalian Proksi Songsang?

Barbara Streisand
Barbara Streisandasal
2024-12-15 22:57:15782semak imbas

How Can I Inspect and Preserve an HTTP Request Body for Reverse Proxy Handling?

Memelihara Badan Permintaan untuk Pengendalian Proksi Terbalik

Dalam sesetengah senario, semasa memeriksa permintaan HTTP dalam http.Handler tersuai, ia mungkin perlu untuk memeriksa badan permintaan, tetapi juga mengekalkan permintaan asal untuk pemprosesan selanjutnya, seperti memajukannya kepada pengendali proksi terbalik. Untuk mencapai matlamat ini, pertimbangkan pendekatan berikut:

Isu timbul apabila badan permintaan dikeringkan semasa pemeriksaan, tidak meninggalkan apa-apa untuk pengguna berikutnya seperti proksi terbalik. Untuk mengatasi masalah ini, anda boleh membaca badan permintaan ke dalam penimbal, dan kemudian mencipta dua pembaca baharu yang disokong oleh penimbal ini:

  1. Buat Penampan: Gunakan io.ReadAll( r.Body) untuk membaca badan permintaan ke dalam penimbal []bait. Operasi ini mengalirkan badan permintaan asal.
  2. Buat Dua Pembaca: Gunakan io.NopCloser(bytes.NewBuffer(buf)) untuk mencipta dua pembaca baharu (rdr1 dan rdr2) yang disokong oleh yang sama penampan. Pembaca ini akan membenarkan anda mengakses badan beberapa kali tanpa menjejaskan permintaan asal.
  3. Gunakan Pembaca Baharu: Lakukan pemeriksaan anda menggunakan rdr1.
  4. Tetapkan semula Badan Permintaan: Tetapkan badan permintaan (r.Body) kepada rdr2 (dibalut dengan io.NopCloser) kepada set semula kepada keadaan asalnya. Ini membolehkan proksi terbalik memproses permintaan seolah-olah badan itu belum dikeringkan.

Menggunakan pendekatan ini, anda boleh memeriksa badan permintaan, melakukan tindakan yang perlu dan masih menghantar permintaan asal tanpa diubah suai kepada proksi terbalik, mengelakkan ralat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa dan Memelihara Badan Permintaan HTTP untuk Pengendalian Proksi Songsang?. 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