Apabila menggunakan golang untuk komunikasi rangkaian (seperti permintaan http), kadangkala anda perlu menyediakan proksi untuk mengakses sumber rangkaian luaran. Artikel ini akan memperkenalkan cara menyediakan proksi golang.
Mula-mula anda perlu menetapkan pembolehubah persekitaran HTTP_PROXY dan HTTPS_PROXY Nilai kedua-dua pembolehubah ini ialah alamat dan nombor port pelayan proksi , contohnya:
Sistem Linux/MacOS:
export HTTP_PROXY=http://proxy.server.address:port export HTTPS_PROXY=https://proxy.server.address:port
Sistem Windows:
set HTTP_PROXY=http://proxy.server.address:port set HTTPS_PROXY=https://proxy.server.address:port
Jika anda hanya perlukan untuk menetapkan proksi buat sementara waktu, anda boleh menggunakannya dalam program http.ProxyFromEnvironment mendapat maklumat proksi:
import ( "net/http" ) func main() { // 从环境变量中获取代理信息 proxy := http.ProxyFromEnvironment // 创建HTTP客户端 client := &http.Client{ Transport: &http.Transport{ Proxy: proxy, }, } // 发送GET请求 resp, err := client.Get("https://www.google.com") if err != nil { // 处理错误 } // 关闭响应体 defer resp.Body.Close() // 读取响应内容 // ... }
Jika anda perlu menetapkan proksi tertentu, anda boleh menggunakan fungsi NewSingleHostReverseProxy dalam pakej net/http/httputil untuk mencipta proksi:
import ( "net/http" "net/http/httputil" "net/url" ) func main() { // 创建代理服务器的URL proxyUrl, _ := url.Parse("http://proxy.server.address:port") // 创建ReverseProxy reverseProxy := httputil.NewSingleHostReverseProxy(proxyUrl) // 创建HTTP服务器 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 设置代理信息 r.URL.Host = "www.google.com" r.URL.Scheme = "https" // 将请求转发给代理服务器 reverseProxy.ServeHTTP(w, r) }) // 启动HTTP服务器 http.ListenAndServe(":8080", nil) }
Di atas ialah cara menyediakan proksi golang , anda boleh memilih kaedah yang berbeza mengikut keperluan tertentu. Dalam aplikasi praktikal, adalah perlu untuk memberi perhatian kepada keselamatan dan kebolehpercayaan pelayan proksi untuk memastikan keselamatan dan kestabilan komunikasi rangkaian.
Atas ialah kandungan terperinci golang set proxy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!