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-ը։

Ուստի բացահայտ ProxyURL-ով առանձին transport-ը կարող է տեղային թիրախի հարցումը պրոքսիով ուղարկել։ Դա օգտակար է միայն այն դեպքում, երբ պրոքսին կարող է իրավաչափորեն հասնել պահանջվող թիրախին։ Հեռավոր պրոքսիի localhost-ը ձեր նոութբուքի localhost-ը չէ, ուստի երթուղին պարտադրելը ինքնաբերաբար օգտակար կապի փորձ չի դառնում։

Ստուգեք մինչև գործընթացը միջավայրը քեշավորի

Ստանդարտ net/http-ի միջավայրից ստացվող պրոքսիի կազմաձևը քեշավորվում է առաջին օգտագործումից հետո։ Ավելի ուշ նույն աշխատող ծրագրի ներսում միջավայրի փոփոխականը փոխելը նոր կազմաձևով փորձը կրկնելու հուսալի միջոց չէ։ Սկսեք նոր գործընթաց նախատեսված արժեքներով կամ տրամադրեք բացահայտ ընտրիչ, որի վարքագիծը դուք եք վերահսկում։

Այս loopback վարքագիծը վերաբերում է Go 1.27.3-ի ստանդարտ պրոքսիի ընտրիչին։ Այլ լեզուներ և HTTP հաճախորդներ localhost-ի համար կարող են օգտագործել երթուղավորման այլ կանոններ։

Առնչվող հոդվածներ