URLReferrer является нулевым, когда страница HTTPS - PullRequest
11 голосов
/ 13 января 2012

Мы используем URLReferrer и код, переданный в строке запроса, для создания онлайн-видео, чтобы только наши платные клиенты могли ссылаться на нашу страницу воспроизведения видео. Эта система работала хорошо в течение некоторого времени. Я знаю, что URL-реферер может быть подделан, но кто скажет своим клиентам сделать такую ​​вещь для доступа к видео? Это хорошо сработало для нас.

Однако сегодня меня спросили о ком-то, у кого это не сработало. URLReferrer имеет значение null, а их сайт - HTTPS. Я немного читал в Интернете, и у меня сложилось впечатление, что нет способа получить доступ к рефереру URL, когда исходная страница - https. Это правильно ? Если бы я сделал https версию нашего сайта, это разрешило бы это? Или у меня есть другой способ обойти это?

Спасибо

1 Ответ

13 голосов
/ 13 января 2012

Ваши онлайн исследования верны.Основная причина не устанавливать заголовок HTTP Referrer или его эквивалент заключается в том, что это может быть проблемой безопасности.Реферер содержит «откуда вы», это личная информация, и ее не следует раскрывать другим лицам. Какая польза от создания защищенного сайта, если каждый может отследить, где вы были?

Итак:Вы не можете получить реферера, если реферер зашифрован (с помощью SSL или иным способом).


Обновление: вот что говорится в спецификации HTTP о поступлении с безопасного сайта :

Клиенты НЕ ДОЛЖНЫ включать поле заголовка Referer в (небезопасный) HTTP-запрос, если ссылающаяся страница была передана по безопасному протоколу.

Как вы уже догадались, естьникак не обойти это ограничение.Ваш единственный вариант - использовать другую модель проверки.Один из таких методов - дать пользователям ключ и попросить их отправить его в качестве параметра в запросе.Можно подумать о нескольких других методах.

...