Wêrom Go de proxy foar localhost omsylt
Ûnderskied Go syn ynboude loopback-útsûndering fan NO_PROXY en ferlykje rûtearring fia de omjouwing mei in eksplisite ProxyURL.
Go syn proxykiezer fia de omjouwing hat in ynboude útsûndering foar localhost en loopback-IP-bestimmingen. NO_PROXY leechmeitsje hellet dy útsûndering net fuort. Dêrtroch kin in lokale test streekrjocht ferbine, wylst in fersyk nei in iepenbiere hostnamme de proxy lykas ferwachte brûkt.
De regel giet oer de bestimming fan it fersyk. Hy hâldt dy net tsjin om in proxylistener te brûken mei as eigen adres 127.0.0.1.
Besjoch de kiezer sûnder in fersyk te ferstjoeren
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)
}
}
Wolst de ferliking mei de omjouwing sjen, fier it programma dan út mei de proxyfariabelen foar it proses ynsteld. It programma beoardielet allinnich de kiezers; it ferbynt net mei de dokumintaasjeproxy of ien fan de bestimmingen.
Ûntdekking út de omjouwing en in eksplisite kiezer folgje ferskillend belied
ProxyFromEnvironment hâldt rekken mei it bestimmingsskema, de omjouwingsynstellingen en de omsylregels, mei de bysûndere loopback-ôfhanneling derby. ProxyURL jout de opjûne proxy-URL werom foar elk fersyk dat oan dy kiezer trochjûn wurdt.
In apart transport mei in eksplisite ProxyURL kin dêrom in fersyk nei in lokale bestimming fia in proxy stjoere. Dat is allinnich nuttich as de proxy de frege bestimming op in tastiene wize berikke kin. De localhost fan in proxy op ôfstân is net de localhost fan dyn laptop, dus de rûte ôftwinge is net automatysk in nuttige ferbiningstest.
Kontrolearje foardat it proses syn omjouwing yn it lytsûnthâld set hat
De omjouwingsproxykonfiguraasje fan standert net/http wurdt nei it earste gebrûk yn it lytsûnthâld set. Letter yn itselde rinnende programma in omjouwingsfariabele feroarje is gjin betroubere manier om in test mei in nije konfiguraasje te werheljen. Start in nij proses mei de bedoelde wearden of jou in eksplisite kiezer op wêrfan'tst it gedrach behearskest.
Dit loopback-gedrach jildt foar de standertproxykiezer fan Go 1.27.3. Oare talen en HTTP-kliïnten kinne oare rûtearregels foar localhost brûke.