Every time you click a link while browsing the web, your web browser passes information to the site you are requesting. One of the pieces of information is the "referring url" or the site you were on previously.
Various sites use the referring url for different means. Most sites store each site access into a log file and the referring url is usually recorded with the entry. Other uses are for authentification, affiliate program tracking, and statistics/reporting. HTTP_REFERRER is the environment variable that contains the previous url information.
Here is a list of reasons for having "No Referrer":
- Request from bookmark
- Set as homepage
- Email link - usually from a desktop email client
- Type in traffic
- New window
- Popup window (most webmail clients use this)
- target=... in the link (opens a new window) similar to popup
- Right click a link and choose "open link in new window/tab"
- Meta refresh redirect
- Browser refresh/reload
- Browser not passing referring url
- Web crawlers, scrapers, scripts - computer programs scanning the web for content
- AJAX call
- Proxy servers filtering or not passing referring url information
- 301 and 302 redirects on servers that are set to discard the HTTP_REFERER