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 ఉన్న ప్రత్యేక ట్రాన్స్‌పోర్ట్ స్థానిక లక్ష్యానికి అభ్యర్థనను ప్రాక్సీ ద్వారా పంపగలదు. ప్రాక్సీ కోరిన లక్ష్యాన్ని చట్టబద్ధంగా చేరుకోగలిగినప్పుడే ఇది ఉపయోగకరం. దూరంలోని ప్రాక్సీ localhost మీ ల్యాప్‌టాప్ localhost కాదు, కాబట్టి మార్గాన్ని బలవంతం చేయడం ఆటోమేటిక్‌గా ఉపయోగకరమైన కనెక్టివిటీ పరీక్ష కాదు.

ప్రక్రియ ఎన్విరాన్‌మెంట్‌ను క్యాష్ చేయకముందే పరిశీలించండి

ప్రామాణిక net/http ఎన్విరాన్‌మెంట్ ప్రాక్సీ కాన్ఫిగరేషన్ మొదటి వినియోగం తర్వాత క్యాష్ అవుతుంది. తరువాత అదే నడుస్తున్న ప్రోగ్రామ్‌లో ఎన్విరాన్‌మెంట్ వేరియబుల్ మార్చడం కొత్త కాన్ఫిగరేషన్ పరీక్షను పునరావృతం చేయడానికి నమ్మదగిన పద్ధతి కాదు. ఉద్దేశించిన విలువలతో కొత్త ప్రక్రియను ప్రారంభించండి లేదా ప్రవర్తనను మీరు నియంత్రించే స్పష్టమైన ఎంపికదారును ఇవ్వండి.

ఈ loopback ప్రవర్తన Go 1.27.3 ప్రామాణిక ప్రాక్సీ ఎంపికదారుకు వర్తిస్తుంది. ఇతర భాషలు, HTTP క్లయింట్‌లు localhost కోసం వేర్వేరు రూటింగ్ నియమాలను వాడవచ్చు.

సంబంధిత వ్యాసాలు