Kuasa bahasa Golang terletak pada kecekapan tinggi dan keupayaan pengaturcaraan rangkaian yang berkuasa. Antaranya, permintaan proksi HTTP adalah salah satu masalah yang sering dihadapi oleh pembangun.
Dalam artikel ini, kami akan meneroka cara menulis permintaan proksi HTTP menggunakan Golang. Kami akan mencapai ini melalui langkah berikut:
Fahami cara permintaan proksi HTTP berfungsi
Permintaan proksi HTTP ialah protokol komunikasi rangkaian yang membolehkan pelanggan menghantar permintaan melalui pelayan proksi untuk mengakses sasaran laman web. Pelayan proksi ini menyekat komunikasi terus antara klien dan pelayan sasaran dengan memajukan permintaan dan respons. Terdapat dua jenis pelayan proksi: proksi hadapan dan proksi songsang.
Proksi hadapan ialah pelayan yang terletak di antara klien dan pelayan sasaran. Pelanggan menghantar permintaan kepada pelayan proksi, dan pelayan proksi memajukan permintaan kepada pelayan sasaran dan mengembalikan respons pelayan sasaran kepada klien. Menggunakan proksi hadapan boleh menyembunyikan alamat IP klien dan mengawal serta memantau data dalam rangkaian.
Proksi terbalik ialah pelayan yang terletak di antara pelayan sasaran dan klien. Majukan permintaan kepada pelayan terbaik untuk meningkatkan prestasi sistem, kebolehskalaan dan keselamatan. Proksi terbalik sering digunakan untuk pengimbangan beban untuk memastikan komunikasi rangkaian yang cekap.
Dalam artikel ini, kami akan memperkenalkan cara menulis kod permintaan proksi ke hadapan menggunakan Golang.
Menulis kod permintaan proksi HTTP
Seterusnya, kami akan memperkenalkan cara menggunakan Golang untuk menulis kod permintaan proksi HTTP:
package main import ( "fmt" "net/http" )
func handler(w http.ResponseWriter, r *http.Request) { response, err := http.Get("https://www.google.com") if err != nil { fmt.Fprintf(w, "Error Occured: %s", err.Error()) }else { fmt.Fprintf(w, "<html><head><title>%s</title></head><body>", response.Status) fmt.Fprintf(w, "<h1>Status</h1>") fmt.Fprintf(w, "<pre class="brush:php;toolbar:false">%s", response.Status) fmt.Fprintf(w, "
%s: %s", k, v[0]) } fmt.Fprintf(w, "