Избирачот на прокси преку околината во 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.

Поврзани статии