Comment utiliser Go et http.Transport pour implémenter la fonction de serveur proxy HTTP ?
Introduction :
Le serveur proxy HTTP est un service intermédiaire puissant qui permet aux clients de communiquer avec les serveurs cibles via le serveur proxy. Cet article expliquera comment utiliser le langage Go et la bibliothèque http.Transport pour implémenter un serveur proxy HTTP simple, y compris l'établissement et l'utilisation du serveur proxy.
import ( "log" "net/http" "net/url" )
func main() { // 配置代理服务器地址 proxyURL, err := url.Parse("http://localhost:8080") if err != nil { log.Fatal("Error parsing proxy URL: ", err) } // 创建http.Transport实例 transport := &http.Transport{ Proxy: http.ProxyURL(proxyURL), } // 创建http.Client实例 client := &http.Client{ Transport: transport, } // 配置代理服务器的请求处理函数 http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { // 将请求重定向到目标服务器 resp, err := client.Do(req) if err != nil { http.Error(w, "Error executing request", http.StatusInternalServerError) return } defer resp.Body.Close() // 将目标服务器的响应返回给客户端 for k, v := range resp.Header { w.Header().Set(k, v[0]) } w.WriteHeader(resp.StatusCode) io.Copy(w, resp.Body) }) // 启动代理服务器 log.Fatal(http.ListenAndServe(":8080", nil)) }
go run proxy.go
Maintenant, le serveur proxy s'exécute sur le port local 8080.
Ensuite, nous pouvons utiliser n'importe quel outil réseau (comme un navigateur) pour tester le serveur proxy. Remplacez simplement l'URL de votre serveur cible par l'URL de votre serveur proxy.
Par exemple, si nous voulons accéder au site Web "http://www.example.com", nous pouvons saisir "http://localhost:8080" dans le navigateur, puis le serveur proxy redirigera la demande vers le serveur cible, et renvoie la réponse au navigateur.
Conclusion :
Cet article explique comment utiliser le langage Go et la bibliothèque http.Transport pour implémenter un simple serveur proxy HTTP. Nous avons découvert les principes et la configuration des serveurs proxy et fourni des exemples de code complets. En utilisant cet exemple comme point de départ, vous pouvez étendre et personnaliser les fonctionnalités du serveur proxy selon vos propres besoins. Je vous souhaite du succès dans votre pratique!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!