May nakapaloob na eksepsiyon para sa localhost at mga loopback IP na destinasyon ang environment proxy selector ng Go. Hindi inaalis ng pag-blanko sa NO_PROXY ang eksepsiyong iyon. Dahil dito, maaaring direktang kumonekta ang isang lokal na test habang gumagamit ng proxy gaya ng inaasahan ang isang request sa pampublikong hostname.

Tungkol sa destinasyon ng request ang tuntunin. Hindi nito pinipigilan ang paggamit ng proxy listener na ang sariling address ay 127.0.0.1.

Suriin ang selector nang hindi nagpapadala ng request

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)
    }
}

Kung gusto mong makita ang paghahambing sa environment, patakbuhin ang programa na nakatakda ang mga proxy variable para sa proseso. Sinusuri lang ng programa ang mga selector; hindi ito kumokonekta sa proxy na halimbawa sa dokumentasyon o sa alinman sa mga destinasyon.

Magkaibang patakaran ang pagtuklas mula sa environment at tahasang selector

Isinasaalang-alang ng ProxyFromEnvironment ang scheme ng destinasyon, mga setting ng environment, at mga tuntunin sa pag-bypass, kasama ang espesyal nitong pagtrato sa loopback. Ibinabalik ng ProxyURL ang ibinigay na proxy URL para sa bawat request na ipinasa sa selector na iyon.

Kaya ang nakalaang transport na may tahasang ProxyURL ay maaaring magpadala ng request sa lokal na destinasyon sa pamamagitan ng proxy. Kapaki-pakinabang lamang ito kung lehitimong maaabot ng proxy ang hiniling na destinasyon. Ang localhost ng malayong proxy ay hindi localhost ng iyong laptop, kaya hindi awtomatikong nagiging kapaki-pakinabang na connectivity test ang pagpilit sa ruta.

Suriin bago ma-cache ng proseso ang environment nito

Naka-cache ang environment proxy configuration ng karaniwang net/http matapos ang unang paggamit. Ang pagbabago ng environment variable sa parehong tumatakbong programa sa ibang pagkakataon ay hindi maaasahang paraan upang ulitin ang test gamit ang bagong configuration. Magsimula ng bagong proseso na may nilalayong mga halaga, o magbigay ng tahasang selector na kontrolado mo ang asal.

Nalalapat ang loopback behavior na ito sa karaniwang proxy selector ng Go 1.27.3. Maaaring gumamit ang ibang wika at HTTP client ng ibang tuntunin sa pagruruta para sa localhost.

Kaugnay na mga artikulo