هنگام سفارشیسازی انتقال HTTP در Go، ProxyFromEnvironment را حفظ کنید
هنگام سفارشیسازی مهلتهای انتقال یا استخرهای اتصال، انتخاب پروکسی محیطی Go را حفظ کنید و پیشفرض را با فیلد Proxy بدون مقدار جایگزین نکنید.
DefaultTransport استاندارد Go فیلد Proxy را روی ProxyFromEnvironment تنظیم میکند. &http.Transport{} که جداگانه ساخته شود تابع Proxy تهی دارد و در نتیجه هیچ پروکسی انتخاب نمیکند.
این تفاوت ممکن است پس از افزودن یک انتقال فقط برای تغییر یک مهلت ظاهر شود. تا زمانی که پیشفرض استاندارد نصب است، آن را کلون کنید و فیلد مورد نیاز را تغییر دهید:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}کلون، انتخاب پروکسی محیطی و سایر تنظیمات پیشفرض انتقال را حفظ میکند. این تبدیل نوع فرض میکند که برنامه DefaultTransport را با RoundTripper دیگری جایگزین نکرده است.
برای انتقالی که عمداً از صفر ساخته شده است، وقتی سیاست مسیریابی آن است Proxy: http.ProxyFromEnvironment را صریحاً تنظیم کنید. یک تابع ProxyURL صریح سیاست دیگری را بیان میکند: یک واسطه انتخابشده.
انتقال را پیش از آنکه درخواستهای همزمان از آن استفاده کنند پیکربندی کنید و سپس آن را برای بار کاری دوباره به کار ببرید. تغییر یک شیء پیشفرض مشترک میتواند کلاینتهای نامرتبط را تحت تأثیر قرار دهد.
تنظیمات TLS سفارشی جداگانه است. غیرفعال کردن بررسی گواهی برای حفظ کشف پروکسی لازم نیست و امنیت هر درخواست HTTPS مطابق را تغییر میدهد.