Para usar un proxy HTTP, la solicitud se envía desde el cliente a la dirección IP del servidor proxy en lugar de al servidor de destino. El proxy debe leer el encabezado HTTP para extraer el URI de solicitud . El URI de solicitud incluye el nombre o la IP del servidor de destino, y el servidor proxy usa esa información para reenviar la solicitud.
La especificación HTTP permite que la línea de solicitud excluya el nombre y el puerto del servidor cuando no se usa un proxy (ya que estos serían innecesarios si la solicitud se enviara directamente a ese servidor). Pero, según las especificaciones ...
El formulario absoluteURI se REQUIERE cuando la solicitud se realiza a un proxy.
Entonces, cuando no use un proxy, la línea de solicitud podría verse así:
GET /robots.txt HTTP/1.1
pero para usar un proxy, la línea debe incluir el nombre del servidor (y el puerto, si no 80):
GET http://httpbin.org:80/robots.txt HTTP/1.1
El lado de la respuesta si la operación puede ser más simple ya que el servidor proxy puede simplemente transmitir la respuesta literal a través del socket de solicitud preestablecido.