如何将Cookie传递到Apache中的子域

时间:2018-11-09 19:51:07

标签: reactjs apache cookies proxy

假设我在.NET上有项目,并且需要在ReactJS上开发一些附加模块的前端。根据要求,我只能在后端登录(它具有自己的UI),而React上的前端应该是一个独立的应用程序。我可以通过在Header中传递cookie(在后端登录后获得)来在后端使用API​​进行授权。

我已将源代码放置到/ 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上使用。但是我需要后端到路径cookie(例如http://prntscr.com/lgfikx)到前端(当前是http://prntscr.com/lgfjlx

我尝试了ProxyPassReverseCookiePath,ProxyPassReverseCookieDomain,Set-Cookie,但失败了。可能是我用错了,但是在任何地方都找不到有效的示例。类似问题的答案对我不起作用。

我的最终目标是授权前端,这样我就可以与后端API进行交流了。有人可以告诉我最好的或任何可行的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您可以在WebDev工具中看到正确的cookie,则很可能是将cookie设置为HttpOnly,并且一开始并没有将其提供给JavaScript。

如果您的后端知道使用的域名(它设置的cookie应该在Web开发人员工具的“域”列中显示为.project.com,而不是127.0.0.1或localhost),则您的前端应用应该能够访问饼干也一样。

仅当后端服务器使用的域名与反向代理使用的域名不同时,才需要ProxyPassReverseCookieDomain。 (即:后端位于domain.com,但是您正在通过project.com上的反向代理进行访问)