ឧបករណ៍ជ្រើសប្រូកស៊ីតាមបរិស្ថានរបស់ Go មានករណីលើកលែងស្រាប់សម្រាប់ localhost និងគោលដៅ IP loopback។ ការលុបតម្លៃ 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 ប្រូកស៊ីដែលបានផ្តល់ សម្រាប់សំណើនីមួយៗដែលបញ្ជូនទៅឧបករណ៍ជ្រើសនោះ។

ដូច្នេះ transport ដាច់ដោយឡែកដែលមាន ProxyURL បញ្ជាក់ច្បាស់ អាចផ្ញើសំណើទៅគោលដៅក្នុងម៉ាស៊ីនតាមប្រូកស៊ី។ វាមានប្រយោជន៍តែនៅពេលប្រូកស៊ីអាចទៅដល់គោលដៅដែលស្នើសុំបានដោយស្របច្បាប់។ localhost របស់ប្រូកស៊ីពីចម្ងាយមិនមែនជា localhost របស់កុំព្យូទ័រយួរដៃអ្នកទេ ដូច្នេះការបង្ខំផ្លូវមិនមែនជាការសាកល្បងការតភ្ជាប់ដែលមានប្រយោជន៍ដោយស្វ័យប្រវត្តិឡើយ។

ពិនិត្យមុនពេលដំណើរការរក្សាបរិស្ថានក្នុងឃ្លាំងសម្ងាត់

ការកំណត់ប្រូកស៊ីតាមបរិស្ថានរបស់ net/http ស្តង់ដារត្រូវបានរក្សាក្នុងឃ្លាំងសម្ងាត់ក្រោយការប្រើលើកដំបូង។ ការប្តូរអថេរបរិស្ថានពេលក្រោយក្នុងកម្មវិធីដដែលដែលកំពុងដំណើរការ មិនមែនជាវិធីដែលអាចទុកចិត្តបានដើម្បីធ្វើតេស្តការកំណត់ថ្មីម្តងទៀតទេ។ ចាប់ផ្តើមដំណើរការថ្មីជាមួយតម្លៃដែលចង់បាន ឬផ្តល់ឧបករណ៍ជ្រើសបញ្ជាក់ច្បាស់ដែលអ្នកគ្រប់គ្រងឥរិយាបថរបស់វា។

ឥរិយាបថ loopback នេះអនុវត្តចំពោះឧបករណ៍ជ្រើសប្រូកស៊ីស្តង់ដាររបស់ Go 1.27.3។ ភាសា និងកម្មវិធីអតិថិជន HTTP ផ្សេងៗអាចប្រើច្បាប់កំណត់ផ្លូវ localhost ខុសគ្នា។

អត្ថបទពាក់ព័ន្ធ