假设我在.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进行交流了。有人可以告诉我最好的或任何可行的解决方案吗?
答案 0 :(得分:0)
如果您可以在WebDev工具中看到正确的cookie,则很可能是将cookie设置为HttpOnly,并且一开始并没有将其提供给JavaScript。
如果您的后端知道使用的域名(它设置的cookie应该在Web开发人员工具的“域”列中显示为.project.com,而不是127.0.0.1或localhost),则您的前端应用应该能够访问饼干也一样。
仅当后端服务器使用的域名与反向代理使用的域名不同时,才需要ProxyPassReverseCookieDomain。 (即:后端位于domain.com,但是您正在通过project.com上的反向代理进行访问)