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

Холбоотой нийтлэлүүд