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 үшін басқа бағыттау ережелерін қолдануы мүмкін.

Қатысты мақалалар