Как передать cookie на поддомен в Apache - PullRequest
0 голосов
/ 09 ноября 2018

Предположим, у меня есть проект на .NET, и он требует разработки внешнего интерфейса для какого-то дополнительного модуля на ReactJS.В соответствии с требованиями, я могу войти в систему только на бэкэнд-стороне (у него есть собственный интерфейс), а интерфейс на React должен быть автономным приложением.Я могу авторизоваться на стороне внешнего интерфейса с помощью API бэкэнда, передавая файлы cookie (которые я получаю после входа в бэкэнд) в заголовке.

Я поместил исходный код в / var / www / project, так что есть такая структура:

/ var / www / project / backend - .NET обслуживает 127.0.0.1:5000

/ var / www / project / frontend - я сгенерировал статическую сборку из ReactJS в / var / www/project/frontend/index.html

Моя конфигурация Apache:

<VirtualHost *:80>
        ServerName project.com

        ProxyPass / http://127.0.0.1:5000/
        ProxyPassReverse / http://127.0.0.1:5000/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>
        ServerName subdomain.project.com

        DocumentRoot /var/www/project/frontend/

        <Directory "/">
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Бэкэнд работает, и я могу получить к нему доступ на project.com.Фронтенд работает также на subdomain.project.com.Но мне нужен backend для пути cookie (например, http://prntscr.com/lgfikx) для внешнего интерфейса (где в настоящее время http://prntscr.com/lgfjlx)

Я пробовал ProxyPassReverseCookiePath, ProxyPassReverseCookieDomain, Set-Cookie, но не смог. Вероятно, у меня естьпросто использовал его неправильно, но я нигде не нашел рабочего примера. Ответы на подобные вопросы у меня не сработали.

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

1 Ответ

0 голосов
/ 10 ноября 2018

Если вы видите правильный cookie в инструментах WebDev, скорее всего, вы установили cookie на HttpOnly и не сделали его доступным для JavaScript.

Если ваш бэкэнд знает об используемом доменном имени (файлы cookie, которые он устанавливает, должны указывать .project.com в столбце «Домен» инструментов веб-разработчика, а не 127.0.0.1 или localhost), ваше приложение веб-интерфейса должно иметь доступ печенье тоже.

Вам нужен только ProxyPassReverseCookieDomain, если ваш внутренний сервер использует имя домена, отличное от того, которое использует обратный прокси-сервер. (т. е. серверная часть живет на domain.com, но вы обращаетесь к ней через обратный прокси-сервер на project.com)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...