Using a proxy is really the only way to do this on a system wide basis. Linux has no concept of HTTP headers... it's just there to manage the underlying sockets. Each client program, however, will need to use the proxy.
For Squid, use request_header_replace configuration directive:
request_header_replace header_name data