Lars Ingebrigtsen writes: > 0 - always send referrer (default). > 1 - only send if base domains match. > 2 - only send if hosts match. > > Adding something like this (and defaulting to 1) might make sense for > eww. I took a stab at implementing this. It was trickier than I had anticipated. The URL library already had a mechanism of sorts for adding Referer headers, but it was as an optional argument to a helper function, and there was no way (short of code changes) of making the entry points of url.el pass that argument to the helper. Changing the signature of the url entry points and tracking down every caller didn't seem attractive to me. Instead, I reasoned that the referring url is a property of the page currently being displayed, so a buffer-local variable seemed natural. That hit a snag because eww uses url queues, and the queue runner didn't care what the current buffer was. So some requests got referrers, some didn't. I fixed the queue mechanism so it always calls url-retrieve from the same buffer that queued up the job. With the basic mechanism for sending the Referer header then working, I looked at limiting the distribution of it. url-privacy-level already existed, and had a basic on-off-knob for referrers, or "lastloc", as it's called in that variable. I left that alone, but added an additional user option - url-lastloc-privacy, with possible values "none", "domain-match" and "host-match" corresponding to the levels mentioned above, and with "domain-match" the default. So with this patch, eww sets up the buffer local url-current-lastloc when the page renders. Subsequent requests, be they automatic requests for images or other resources, or user-invoked link-following, get the correct Referer header if the privacy settings allow it.