Miks Go jätab localhosti korral puhverserveri vahele
Erista Go sisseehitatud loopback-erandit NO_PROXY seadistusest ja võrdle keskkonnapõhist marsruutimist selgesõnalise ProxyURL-iga.
Go keskkonnapõhisel puhverserveri valijal on sisseehitatud erand localhosti ja loopback-IP-sihtkohtade jaoks. NO_PROXY tühjendamine seda erandit ei eemalda. Seetõttu võib kohalik test minna otse, samal ajal kui päring avalikule hostinimele kasutab puhverserverit ootuspäraselt.
Reegel puudutab päringu sihtkohta. See ei takista kasutamast puhverserveri kuulajat, mille enda aadress on 127.0.0.1.
Uuri valijat ilma päringut saatmata
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)
}
}
Kui soovid näha võrdlust keskkonnaga, käivita programm nii, et protsessi puhverserverimuutujad on määratud. Programm üksnes hindab valijaid; see ei loo ühendust dokumentatsiooninäite puhverserveri ega ühegi sihtkohaga.
Keskkonnast tuvastamine ja selgesõnaline valija järgivad erinevaid reegleid
ProxyFromEnvironment arvestab sihtkoha skeemi, keskkonnaseadistusi ja möödapääsureegleid, sealhulgas loopback-aadresside erikäsitlust. ProxyURL tagastab antud puhverserveri URL-i iga sellele valijale edastatud päringu jaoks.
Seega saab eraldi transport selgesõnalise ProxyURL-iga saata kohaliku sihtkoha päringu puhverserveri kaudu. Sellest on kasu ainult siis, kui puhverserver saab taotletud sihtkohta õiguspäraselt jõuda. Kaugpuhverserveri localhost ei ole sinu sülearvuti localhost, seega ei ole marsruudi pealesundimine automaatselt kasulik ühenduvustest.
Kontrolli enne, kui protsess on keskkonna vahemällu salvestanud
Standardse net/http keskkonnapõhine puhverserveri seadistus salvestatakse pärast esimest kasutust vahemällu. Hiljem samas töötavas programmis keskkonnamuutuja muutmine ei ole usaldusväärne viis värske seadistusega testi korrata. Käivita uus protsess soovitud väärtustega või määra selgesõnaline valija, mille käitumist juhid ise.
See loopback-käitumine kehtib Go 1.27.3 standardse puhverserveri valija kohta. Teised keeled ja HTTP-kliendid võivad kasutada teistsuguseid localhosti marsruutimisreegleid.