![使用 AJP 时会话无效](https://linux22.com/image/699266/%E4%BD%BF%E7%94%A8%20AJP%20%E6%97%B6%E4%BC%9A%E8%AF%9D%E6%97%A0%E6%95%88.png)
我有以下设置: Apache 运行前端(AngularJS)
Tomcat 7 运行后端(Spring MVC,Spring Security)
Apache 配置
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
ProxyRequests off
ProxyPreserveHost on
ProxyPass /api/ ajp://132.230.166.21:8009/OntoRais/api/
ProxyPassReverse /api/ ajp://132.230.166.21:8009/OntoRais/api/
Alias /rais "/home/bwright/Repositories/ontology-toolchain/WebClient"
<Directory "/home/bwright/Repositories/ontology-toolchain/WebClient">
Order allow,deny
Allow from all
Require all granted
</Directory
</VirtualHost>
可以看出,我使用 ajp 协议将所有 api 调用传递给 tomcat 服务器。
Tomcat 配置(Server.xml)
与全新安装相比,除了以下之外没有任何变化:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" enableLookups="false"/>
现在,当我尝试通过前端访问 tomcat 资源时,出现 403
HTTP Status 403 - Full authentication is required to access this resource accessing /OntoRais/api/user
在 tomcat 服务器日志中我得到
13:25:10.034 [ajp-bio-8009-exec-7] DEBUG o.s.s.w.s.SessionManagementFilter - Requested session ID ED0779DC647DEE3C58DEA7059C260594 is invalid.
当通过 bowser 直接访问 tomcat 服务器的相同资源时,
http://localhost:8080/OntoRais/api/user
一切正常。
编辑
需要澄清的是,132.230.166.21 与 localhost 是同一台机器。我将配置更改为 localhost,没有任何变化。
希望这里有人可以帮助我,谢谢本尼迪克特
答案1
问题是在添加后设置 SESSIONID
ProxyPassReverseCookiePath /OntoRais /
到 apache 设置,一切正常。