Немного опоздал к столу, но, похоже, с прошлого поста произошли изменения.
В Chrome (вероятно, большинство современных браузеров в настоящее время) больше не позволяют программно изменять Referer - теперь это static-ish.
Тем не менее, он позволяет отправлять пользовательский заголовок. E.g.:
var xhr = new XMLHttpRequest;
xhr.open("get", "http://www.example.com/", true);
xhr.setRequestHeader('CustomReferer', 'http://www.fake.com/');
xhr.send();
В PHP этот заголовок можно прочитать через «HTTP_ (заголовок в верхнем регистре)»:
$_SERVER['HTTP_CUSTOMREFERER'];
Это был трюк для моего проекта ...
Для многих из нас, вероятно, общеизвестно, но для некоторых, надеюсь, полезно!