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.

Artikuj të ngjashëm