romy4
@romy4
Exception handler

Почему ошибка при установке cookies если подключаться через port forwarding?

Есть сервер в локальной сети (пусть будет 10.10.1.2), на нём крутится php скрипт, который отдаёт html страничку со статистикой. Для входа требуется простая авторизация, которая устанавливает куки.
Если на сервер заходить из локальной сети, то всё ок, но для внешних пользователей (и дебага) приходится делать port forwarding через ssh (ssh -L 127.0.0.1:8080:10.10.1.2:80 192.168.32.2) на локальный 8080 порт, а 192.168.32.2 - гейтвей, который видит подсеть 10.10.х.х.
И вроде бы сервер отдаёт правильные Set-Cookie, но браузер почему-то откидывает их с ошибкой ""set-cookie domain attribute was invalid with regards to the current host url"

Вот так ставятся куки:
setcookie('auth',$hash,time()+$sesstime,"/",$_SERVER['HTTP_HOST'],false,false);


Вот заголовки из локальной сети:
Set-Cookie: auth=001228333034422a366337452e6667435573656816157d673430427f636763447e6d632c1c566f6e64; expires=Thu, 01-Apr-2021 19:04:51 GMT; Max-Age=18000000; path=/; domain=10.10.1.2


А это при порт форвардинге:
Set-Cookie: auth=431d622765774d602236744a6472324c417c712b194e377130771f64783b7b1a3379306656033a2473; expires=Thu, 01-Apr-2021 19:06:04 GMT; Max-Age=18000000; path=/; domain=127.0.0.1:8080


Вроде ж правильный domain приходит в браузер.
Ещё некоторые переменные, может помогут понять:

["REMOTE_ADDR"]=> string(11) "10.10.1.2"
["HTTP_HOST"]=> string(14) "127.0.0.1:8080"
["SERVER_NAME"]=> string(11) "10.10.1.2"
  • Вопрос задан
  • 565 просмотров
Решения вопроса 1
romy4
@romy4 Автор вопроса
Exception handler
Как оказалось, всё дело в стандарте заголовка Set-Cookie и вообще в особенностях куки относительно использования портов.
- куки не поддерживают использования портов. Они шарятся между портами одного домена или ip.
- по стандарту Set-Cookie содержит домен, который, в свою очередь, по своему стандарту RFC 1034, не содержит порта.
rfc6265
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы