The HTTP protocol defines a special command called CONNECT which allows the proxying of
HTTP requests.
The client connects to the HTTP server and sends a CONNECT command to ask the server
to establish a connection to another host (usually on the other side of the firewall).
Essentially, a tunnel is set up between the client and the remote host via the HTTP server,
which merely acts as a data conduit.
The HTTP protocol does not support the concept of a client being able to request for the
HTTP server to listen for incoming connections, hence HTTP proxies cannot be used for
active mode FTP transfers (where the FTP server must connect back to the client).