Go의 CONNECT 헤더를 Transport에 두기
CONNECT 중에 필요한 헤더를 대상 요청에 붙이지 않고 HTTP 프록시로 보냅니다.
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 처리를 사용자 정의합니다. 독자적인 인증 프로토콜을 만들어 내거나 프록시 서비스의 접근 정책을 바꾸지 않습니다.