HTTP / 1.1 RFC не обязывает отправлять заголовок реферера HTTP. Вы не можете делать никаких предположений о его наличии при написании надежного кода; браузеры, которые совершенно не соответствуют требованиям, могут его не включать.
Более того, RFC рекомендует, чтобы "Поле Referer НЕ ДОЛЖНО отправляться, если Request-URI был получен из источника, который не имеет своего собственного URI, такого как ввод с клавиатуры пользователя" , и «Мы предлагаем, хотя и не требуем, чтобы пользователю был предоставлен удобный интерфейс переключения, позволяющий включать или отключать отправку информации От и Получателя» * .
Последнее не очень распространено (хотя некоторые браузеры имеют режим «Private», который удовлетворяет требованиям). Более вероятно, что ваши 2% будут добавлены в закладки URL-адресом, который соответствует первому критерию (URI, полученный из источника без URI), и поэтому браузер не отправляет реферер.