xmlhttprequest подделать реферер, а затем перенаправить на другую страницу? - PullRequest
3 голосов
/ 26 февраля 2010

Я создал некоторый код с использованием curl (PHP), который позволяет мне подделать реферер или очистить реферер, а затем направить пользователя на другую страницу с помощью поддельного реферера.

Однако недостатком этого является то, что IP-адрес в заголовках всегда будет IP-адресом моего сервера, что не является допустимым решением.

Вопрос;

Возможно ли использовать сценарии на стороне клиента, т.е. (xmlhttprequest), чтобы «изменить» реферер и затем направить пользователя на новую страницу?

Таким образом, сохраняя IP-адрес пользователя нетронутым, но подделывая реферер.

Если да, любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 3 ]

10 голосов
/ 26 февраля 2010

не из javascript в современном браузере, когда страница отображается.

Обновление: Смотрите комментарии для некоторых ручных инструментов и других платформ на основе javascript, где вы технически можете подделать реферер. В контексте 8-летнего первоначального вопроса, который, похоже, связан с отправкой веб-запросов, ответ по-прежнему, как правило, «нет».

Я не планирую редактировать все свои десятилетние ответы, хотя даунтеры, пишите в `em. Я заранее прошу прощения за то, что неправильно предвидел будущее и дал ответ, который будет длиться вечно.

1 голос
/ 26 февраля 2010

Это работает в консоли Firefox Javascript:

var xhr = new XMLHttpRequest; 
xhr.open("get", "http://www.example.com/", true); 
xhr.setRequestHeader( 'Referer', 'http://www.fake.com/' ); 
xhr.send();

В логе моего сервера я вижу:

referer: http://www.fake.com/
0 голосов
/ 16 мая 2019

Немного опоздал к столу, но, похоже, с прошлого поста произошли изменения.

В 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'];

Это был трюк для моего проекта ...

Для многих из нас, вероятно, общеизвестно, но для некоторых, надеюсь, полезно!

...