هدری که به http.Request.Header افزوده می‌شود، درخواست مقصد را توصیف می‌کند. وقتی HTTPS از پروکسی HTTP استفاده می‌کند، transport ابتدا CONNECT را انجام می‌دهد. هدرهای درخواست مقصد یک API پیکربندی عمومی برای آن تبادل قبلی نیستند.

برای هدر ثابتی که پروکسی شما لازم دارد، ProxyConnectHeader را در transport پیکربندی کنید:

transport := &http.Transport{
    Proxy: http.ProxyURL(proxyURL),
    ProxyConnectHeader: http.Header{
        "X-Proxy-Account": []string{"example-account"},
    },
}

در اینجا proxyURL نشانی URL تجزیه‌شدهٔ نقطهٔ پایانی است. هدر جنبهٔ نمونه دارد و تنها زمانی سودمند است که اپراتور پروکسی چنین فیلدی را تعریف کند.

برای مقداری که برای هر پروکسی یا مقصد انتخاب می‌شود، از GetProxyConnectHeader استفاده کنید. تابع بازگشتی مستندشده نشانی پروکسی و هدف CONNECT را دریافت می‌کند. وقتی این تابع nil نباشد، فیلد ثابت ProxyConnectHeader نادیده گرفته می‌شود.

مقادیر را در محدودهٔ موردنظر نگه دارید. نشانگر حساب مخصوص پروکسی به تبادل با پروکسی تعلق دارد؛ مقدار مجوز یک وب‌سایت به درخواست مقصد تعلق دارد. اگر تابع بازگشتی نتواند مقدار دست‌دهی لازم را تولید کند، خطای آن را برگردانید، نه اینکه بی‌صدا درخواستی با پیکربندی متفاوت بفرستید.

این تنظیمات نحوهٔ برخورد با CONNECT را سفارشی می‌کنند. آن‌ها پروتکل احراز هویت اختصاصی نمی‌سازند و سیاست دسترسی سرویس پروکسی را تغییر نمی‌دهند.

مقالات مرتبط