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 үчүн башка багыттоо эрежелерин колдонушу мүмкүн.

Тектеш макалалар