先补课,以下网址可以把CAS环境搭起来。
【问题背景】两个系统的整合就不说了,简单来说就是网页放在NginX上,但是ajax调用tomcat的API获取数据,其中tomcat段用CAS做身份认证。具体使用的是org.jasig.cas.client,配置会略有不同就不展开了。
【问题描述】ajax调用不允许跨域访问,如果在该容器中未CAS登陆(没有ticket)则会遇到以下错误。
XMLHttpRequest cannot load [CAS服务器地址] No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin [应用地址] is therefore not allowed access.
【非ajax请求具体的跳转请求】就是标准的跳转,不上图了:
请求1:http访问tomcat。结果:302重定向指向CAS服务器
请求2:访问CAS服务器,带上CASTGC。结果:302重定向指向tomcat并带上ticket
请求3:访问tomcat,带上ticket。结果:200返回资源
【ajax请求具体的跳转请求】:
请求1:ajax访问tomcat。结果:302重定向指向CAS服务器
请求2:访问CAS服务器,带上CASTGC。结果:200返回无内容,浏览器提示错误(chrome)
跨域访问规则Access-Control-Allow-Origin是在CAS服务器配置的,项目无法更改。
【参考的解决方法】
a.在session超时的