Most WWW clients are built on top of libwww, the WWW Common Library, which handles the different communication protocols used in the Web, namely HTTP, FTP, Gopher, News and WAIS.
The entire proxy support is handled automatically for clients using the libwww. Environment variables are used to control the library. There is an individual environment variable for each access protocol; e.g. http_proxy, ftp_proxy, gopher_proxy and wais_proxy. These variables are set to the URL pointing to the proxy server that is supposed to serve requests of that protocol, e.g.
Usually the proxy server is the same for all the protocols, but does not have to be.
When the environment variable for a given protocol is set, the libwww code causes a connection to always be made to the proxy rather than directly to the remote server. Some clients also provide additional means of configuring the client to use a proxy server (e.g. Mosaic for X can use X resources and Mosaic for Windows uses settings in its initialization file).
The latest (as of April 1994) libwww (version 2.15) also supports an exception list so clients don't have to always go through the proxy. This is useful for avoiding the proxy for local servers where the clients can make a direct connection.
Another difference in the protocol between the client and the proxy is that the requested URL has to be a full URL when it is requested from the proxy server. These are the only differences between a normal and proxied HTTP transaction. The simplicity of proxy support in a Web client means that even clients not based on libwww can easily support the proxy.
Proxy support is implemented only for HTTP/1.0 on the server side so clients must use that protocol. This is not a problem because libwww does this automatically, and most clients (if not all) have already been upgraded to use HTTP/1.0.