2017-01-07 7 views
2

Я использую docker в качестве локальной локальной среды разработки и использую dinghy-http-proxy, который добавляет новый TLD .docker для запроса карты на контейнер nginx-proxy.Невозможно создать файлы cookie при использовании ngrok с заголовком rewrite

Мои сайты обычно достигаются с помощью URL-адреса, такого как http://devel.domain.com.docker.

Я хочу использовать ngrok для локального развития при доступе к удаленным веб-камерам.

я успешно запустил ngrok с командой:

ngrok http -host-header=rewrite devel.domain.com.docker 80 

я могу получить доступ к форме входа моего веб-приложения через адрес http://randomsubdomain.ngrok.io.

Однако я не могу войти в систему, потому что похоже, что сеанс cookie не может быть установлен.

Действительно, cookie-сеансы пытаются установить для домена devel.domain.com.docker, но поскольку мы используем randomsubdomain.ngrok.io, в браузере они заблокированы из соображения безопасности.

Как я могу обойти эту проблему? Я что-то упустил в своей конфигурации? Является ли ngrok правильным инструментом для того, чего я хочу достичь?

ответ

4

Задаваемые непосредственно на поддержку ngrok.io и получил этот ответ:

Нет, вы не пропуская ничего, что это просто несчастный побочный эффект перезаписи заголовка узла. Переписывание заголовков хоста работает только для некоторых приложений из-за таких осложнений (и других, которые включают javascript и кросс-начало и т. Д.). Если возможно, всегда лучше переконфигурировать ваш сайт, чтобы принять заголовок узла ngrok.io.

Тем не менее, я нашел решение, проверяя, если запрос содержит в заголовке x-original-host домене ngrok.io, а потом изменить механизм сеанса (в PHP session_set_cookie_params), чтобы использовать домен x-original-host вместо этого.

+0

ничего себе. Спасибо за публикацию! Я просто потратил 8 часов, пытаясь понять, почему мои куки не сохраняются. Однако в моей ситуации я использую Ruby on Rails, и файлы cookie не сохраняются, потому что я просто не указывал -host-header = rewrite. Добавлено это, и он работал отлично. –

+0

Больше проницательности: у меня появилось больше проблем с работой, и я понял, что он не работает в браузере Chrome, но работал в Firefox! Я спросил об этом, и Алан сказал: «Да, это хром-защита, я верю, но я никогда не смотрел в правильный флаг, чтобы отключить его. Правильный способ заставить его работать в хроме изменить: домен = .ngrok.io до domain = mydomain.ngrok.io - Я понял, что я использую Rails, и у меня есть опция domain:: все в моих настройках cookie. Я удалил это в среде разработки, и теперь он отлично работает! –