http.Request.Header에 추가한 헤더는 대상 요청을 설명합니다. HTTPS가 HTTP 프록시를 사용하면 transport는 먼저 CONNECT를 수행합니다. 대상 요청 헤더는 그 앞선 교환을 위한 일반 구성 API가 아닙니다.

프록시가 요구하는 정적 헤더는 transport의 ProxyConnectHeader을 구성하세요:

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

여기서 proxyURL은 파싱된 엔드포인트 URL입니다. 이 헤더는 예시이며 프록시 운영자가 그런 필드를 정의할 때만 유용합니다.

프록시나 대상별로 선택하는 값에는 GetProxyConnectHeader을 사용하세요. 문서화된 콜백은 프록시 URL과 CONNECT 대상을 받습니다. 이 콜백이 nil이 아니면 정적 ProxyConnectHeader 필드는 무시됩니다.

값은 의도한 범위에 두세요. 프록시 전용 계정 표시는 프록시 교환에 속하고, 웹사이트 권한 값은 대상 요청에 속합니다. 콜백이 필요한 핸드셰이크 값을 만들 수 없다면 조용히 다르게 구성된 요청을 보내지 말고 그 오류를 반환하세요.

이 설정은 CONNECT 처리를 사용자 정의합니다. 독자적인 인증 프로토콜을 만들어 내거나 프록시 서비스의 접근 정책을 바꾸지 않습니다.

관련 글