Para un identificador de libcurl existente, separe explícitamente las listas de encabezados de destino y de proxy:

curl_easy_setopt(handle, CURLOPT_HEADEROPT, (long)CURLHEADER_SEPARATE);
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HTTPHEADER, origin_headers);

Mantenga vivo el identificador configurado y las listas válidas durante la transferencia. CURLHEADER_SEPARATE distingue los encabezados usados en CONNECT de los encabezados usados para la solicitud de destino. Los ejemplos antiguos de política unificada pueden poner la lista ordinaria en ambos intercambios.

Ruta de la solicitudSignificado de las listas separadas
HTTPS dentro de un túnel CONNECT ordinarioEl intercambio con el proxy va primero; después siguen los encabezados HTTP de destino dentro del TLS de destino.
Reenvío HTTP simpleEl proxy puede leer los encabezados de destino, y libcurl puede usar ambas listas aplicables en la única solicitud reenviada.

Un marcador de enrutamiento solo para el proxy pertenece al intercambio con el proxy. Con el reenvío en texto plano, un campo personalizado arbitrario puede llegar al origen a menos que la disposición de reenvío lo maneje; el nombre de la opción no es garantía de confidencialidad.

Utilice opciones de credenciales compatibles para la autenticación. Para los metadatos definidos por el operador, determine qué salto los consume y si se pueden reenviar en lugar de poner una contraseña en un campo genérico.

Cuando falte un marcador o parezca filtrarse, identifique la solicitud real que lo contiene. Una devolución de llamada de encabezados que muestra varios intercambios puede hacer que listas correctamente separadas parezcan mezcladas.

Artículos relacionados