Мои CMS ссылки на другие сайты для удобства, и я хотел бы скрыть реферирования, чтобы другие сайты не видели каталог и строку запроса моей CMS. Теперь у меня есть ссылка CMS на файл PHP elswhere на моем сервере, который, в свою очередь, перенаправляется на ссылку через header (), но референт по-прежнему из моей CMS, а не из связывания PHP. Более того…
header("Referer: nowhere"); header("Location: $_REQUEST[urltolinkto]");
… кажется, ничего не меняет. Независимо от того, что я поставил в качестве референта, это всегда одна из моей CMS, где пользователь на самом деле нажал на ссылку.
Можно ли изменить референт (на ссылку PHP), или мне нужно использовать javascript или meta refresh?
Заголовок Referer
– это то, что браузер отправляет на Сервер. Вы меняете реакцию с сервера на браузер, так что это не сработает (в отличие от заголовка Cookie). Насколько я знаю, у вас нет контроля над браузером на стороне браузера при отправке Referer.
Браузеру удается выбрать, что отправить рефереру, но есть способы обойти его.
HTML5 добавил мета-реферер, большинство современных браузеров будут его уважать. Просто добавь
<meta name="referrer" content="no-referrer">
на ваш сайт.
Существуют также службы перенаправления и другие хаки, чтобы скрыть ref (переадресация https, трюки iframe и другие).