Pse Go e anashkalon proxy-n për localhost
Dalloni përjashtimin loopback të integruar në Go nga NO_PROXY dhe krahasoni zgjedhjen sipas mjedisit me një ProxyURL të shprehur qartë.
Përzgjedhësi i proxy-t sipas mjedisit në Go ka një përjashtim të integruar për localhost dhe destinacionet me IP loopback. Zbrazja e NO_PROXY nuk e heq këtë përjashtim. Kjo mund të bëjë që një provë lokale të lidhet drejtpërdrejt, ndërsa një kërkesë drejt një emri publik hosti përdor proxy-n sipas pritshmërisë.
Rregulli ka të bëjë me destinacionin e kërkesës. Nuk ju pengon të përdorni një dëgjues proxy, adresa e të cilit është 127.0.0.1.
Kontrolloni përzgjedhësin pa dërguar kërkesë
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
fixed, _ := url.Parse("http://203.0.113.10:8080")
for _, target := range []string{
"http://localhost:8000/",
"http://127.0.0.1:8000/",
"http://example.com/",
} {
request, _ := http.NewRequest("GET", target, nil)
discovered, err := http.ProxyFromEnvironment(request)
explicit, _ := http.ProxyURL(fixed)(request)
fmt.Println(target, discovered, explicit, err)
}
}
Nëse doni të shihni krahasimin me mjedisin, ekzekutojeni programin me ndryshoret e proxy-t të vendosura për procesin. Programi vetëm vlerëson përzgjedhësit; nuk lidhet me proxy-n e dokumentacionit ose me ndonjë nga destinacionet.
Zbulimi nga mjedisi dhe përzgjedhësi i shprehur qartë janë politika të ndryshme
ProxyFromEnvironment merr parasysh skemën e destinacionit, cilësimet e mjedisit dhe rregullat e anashkalimit, përfshirë trajtimin e veçantë të loopback. ProxyURL kthen URL-në e dhënë të proxy-t për çdo kërkesë që i kalohet atij përzgjedhësi.
Prandaj, një transport i dedikuar me ProxyURL të shprehur qartë mund ta dërgojë kërkesën për një destinacion lokal përmes proxy-t. Kjo vlen vetëm kur proxy mund të arrijë në mënyrë të ligjshme destinacionin e kërkuar. localhost i një proxy në distancë nuk është localhost i laptopit tuaj, ndaj detyrimi i kësaj rruge nuk është automatikisht një provë e dobishme lidhjeje.
Kontrolloni para se procesi ta ruajë mjedisin në cache
Konfigurimi i proxy-t sipas mjedisit në net/http standard ruhet në cache pas përdorimit të parë. Ndryshimi i një ndryshoreje mjedisi më vonë brenda të njëjtit program në ekzekutim nuk është mënyrë e besueshme për të përsëritur një provë me konfigurim të ri. Nisni një proces të ri me vlerat e synuara ose jepni një përzgjedhës të shprehur qartë, sjelljen e të cilit e kontrolloni.
Kjo sjellje loopback zbatohet për përzgjedhësin standard të proxy-t në Go 1.27.3. Gjuhë dhe klientë të tjerë HTTP mund të përdorin rregulla të ndryshme për rrugëzimin e localhost.