Go-ов бирач проксија из окружења има уграђени изузетак за localhost и одредишта са loopback IP адресама. Пражњење NO_PROXY не уклања тај изузетак. Зато локални тест може ићи директно, док захтев ка јавном имену хоста користи прокси као што се очекује.

Правило се односи на одредиште захтева. Не спречава вас да користите прокси слушаоца чија је сопствена адреса 127.0.0.1.

Проверите бирач без слања захтева

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

Ако желите да видите поређење са окружењем, покрените програм са прокси променљивама постављеним за процес. Програм само израчунава резултате бирача; не повезује се ни са проксијем из документације ни са било којим одредиштем.

Откривање из окружења и експлицитни бирач користе различите политике

ProxyFromEnvironment узима у обзир шему одредишта, подешавања окружења и правила заобилажења, укључујући посебну обраду loopback адреса. ProxyURL враћа задати URL проксија за сваки захтев прослеђен том бирачу.

Зато наменски transport са експлицитним ProxyURL може да пошаље захтев ка локалном одредишту преко проксија. То је корисно само када прокси може оправдано да досегне тражено одредиште. localhost удаљеног проксија није localhost вашег лаптопа, па наметање руте не даје аутоматски користан тест повезаности.

Проверите пре него што процес кешира окружење

Прокси конфигурација из окружења у стандардном net/http кешира се након прве употребе. Каснија измена променљиве окружења у истом покренутом програму није поуздан начин да поновите тест са новом конфигурацијом. Покрените нов процес са жељеним вредностима или задајте експлицитни бирач чије понашање контролишете.

Ово loopback понашање важи за стандардни бирач проксија у Go 1.27.3. Други језици и HTTP клијенти могу да користе другачија правила рутирања за localhost.

Повезани чланци