La URL de descarga es correcta, pero un proxy compartido todavía tiene una respuesta almacenada. Si la operación necesita una respuesta validada con el origen, ponga ese requisito en la solicitud:

from urllib.request import ProxyHandler, Request, build_opener
import shutil

opener = build_opener(ProxyHandler({
    "https": "http://proxy.example:8080",
}))
request = Request(download_url, headers={"Cache-Control": "no-cache"})
with opener.open(request, timeout=15) as response:
    shutil.copyfileobj(response, output)

Este fragmento supone que la aplicación posee un flujo de salida binario y proporciona un download_url HTTPS. Para probar una descarga pública permitida sin autenticación de proxy, use un candidato de punto de conexión HTTP de la lista de proxies HTTP en el opener; el requisito de caché de la solicitud sigue igual. Conserva la URL original del recurso mientras pide a las cachés de la ruta de la solicitud que validen antes de reutilizar.

La validación puede reutilizar los bytes almacenados

Una caché conforme que reciba no-cache no puede satisfacer esta solicitud a partir de una respuesta almacenada sin una validación correcta con el origen. El origen puede confirmar que la representación almacenada sigue siendo válida, así que la operación no necesita retransmitir un archivo sin cambios desde el origen.

El max-age=0 de una solicitud expresa un límite de antigüedad. Es útil cuando la aplicación quiere una respuesta que no supere ese límite, pero no es una prohibición de almacenamiento. Una respuesta recién generada puede cumplirlo.

Añadir un parámetro de consulta aleatorio pide un URI de destino distinto. Eso puede producir otra entrada de caché o incluso cambiar la respuesta de la aplicación. Use un parámetro de consulta solo cuando forme parte de la interfaz prevista del recurso.

Para un HTTPS CONNECT normal, el proxy de túnel no puede ver esta cabecera dentro de TLS. La política aún puede llegar al origen y a las cachés que manejan el intercambio HTTP descifrado. Compruebe dónde vive realmente la respuesta almacenada antes de atribuirla al túnel.

Artículos relacionados