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-ის მარშრუტიზაციის განსხვავებული წესები გამოიყენონ.

დაკავშირებული სტატიები