Go localhost üçün niyə proksidən yan keçir
Go-nun daxili loopback istisnasını NO_PROXY-dən fərqləndirin və mühitə əsaslanan marşrutlaşdırmanı açıq ProxyURL ilə müqayisə edin.
Go-nun mühitə əsaslanan proksi seçicisində localhost və loopback IP təyinatları üçün daxili istisna var. NO_PROXY-ni boşaltmaq bu istisnanı aradan qaldırmır. Buna görə yerli sınaq birbaşa qoşula, ictimai host adına göndərilən sorğu isə gözlənildiyi kimi proksidən istifadə edə bilər.
Qayda sorğunun təyinatına aiddir. Öz ünvanı 127.0.0.1 olan proksi dinləyicisindən istifadə etməyə mane olmur.
Sorğu göndərmədən seçicini yoxlayın
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)
}
}
Mühitlə müqayisəni görmək istəyirsinizsə, proqramı proses üçün proksi dəyişənləri təyin edilmiş halda işə salın. Proqram yalnız seçiciləri qiymətləndirir; sənədləşdirmədəki proksiyə və ya təyinatların heç birinə qoşulmur.
Mühitdən aşkarlama və açıq seçici fərqli siyasətlərdir
ProxyFromEnvironment təyinat sxemini, mühit ayarlarını və xüsusi loopback emalı da daxil olmaqla yan keçmə qaydalarını nəzərə alır. ProxyURL həmin seçiciyə ötürülən hər sorğu üçün verilmiş proksi URL-ni qaytarır.
Buna görə açıq ProxyURL olan ayrıca transport yerli təyinata sorğunu proksi vasitəsilə göndərə bilər. Bu yalnız proksi tələb olunan təyinata qanuni şəkildə çata bildikdə faydalıdır. Uzaq proksinin localhost-u noutbukunuzun localhost-u deyil; buna görə marşrutu məcburi seçmək avtomatik olaraq faydalı bağlantı sınağı sayılmır.
Proses mühitini keşə almamış yoxlayın
Standart net/http-nin mühit proksi konfiqurasiyası ilk istifadədən sonra keşə alınır. Daha sonra eyni işləyən proqramda mühit dəyişənini dəyişmək yeni konfiqurasiya sınağını təkrarlamağın etibarlı yolu deyil. Nəzərdə tutulan dəyərlərlə yeni proses başladın və ya davranışını idarə etdiyiniz açıq seçici verin.
Bu loopback davranışı Go 1.27.3-ün standart proksi seçicisinə aiddir. Başqa dillər və HTTP müştəriləri localhost üçün fərqli marşrutlaşdırma qaydalarından istifadə edə bilər.