Go-এর স্ট্যান্ডার্ড DefaultTransport প্রক্সিকে 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 অনুরোধের নিরাপত্তা বদলে দিত।

সম্পর্কিত নিবন্ধ