Go ஏன் localhostக்குப் பதிலியைத் தவிர்க்கிறது
Goவில் உள்ளமைந்த loopback விதிவிலக்கை NO_PROXY அமைப்பிலிருந்து பிரித்து, சூழல் சார்ந்த வழித்தேர்வை வெளிப்படையான ProxyURLஉடன் ஒப்பிடுங்கள்.
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 கொண்ட தனி டிரான்ஸ்போர்ட் உள்ளூர் இலக்குக்கான கோரிக்கையைப் பதிலி வழியாக அனுப்ப முடியும். பதிலி கோரப்பட்ட இலக்கை உரிய முறையில் அடைய முடிந்தால் மட்டுமே இது பயனுள்ளது. தொலைநிலைப் பதிலியின் localhost உங்கள் மடிக்கணினியின் localhost அல்ல; எனவே வழியை வற்புறுத்துவது தானாகவே பயனுள்ள இணைப்புச் சோதனையாகாது.
செயல்முறை சூழலைத் தேக்ககத்தில் சேமிப்பதற்கு முன் சோதியுங்கள்
நிலையான net/httpஇன் சூழல் பதிலி உள்ளமைவு முதல் பயன்பாட்டிற்குப் பிறகு தேக்ககத்தில் சேமிக்கப்படுகிறது. பின்னர் அதே இயங்கும் நிரலுக்குள் சூழல் மாறியை மாற்றுவது புதிய உள்ளமைவுச் சோதனையை மீண்டும் செய்ய நம்பகமான வழியல்ல. விரும்பிய மதிப்புகளுடன் புதிய செயல்முறையைத் தொடங்குங்கள் அல்லது செயல்பாட்டை நீங்கள் கட்டுப்படுத்தும் வெளிப்படையான தேர்வியை அளியுங்கள்.
இந்த loopback செயல்பாடு Go 1.27.3இன் நிலையான பதிலித் தேர்விக்குப் பொருந்தும். பிற மொழிகளும் HTTP கிளையன்ட்களும் localhostக்காக வேறு வழித்தேர்வு விதிகளைப் பயன்படுத்தலாம்.