假设有2个域名:xxx.abc.com,xxx.bbc.com。 且用户已登陆过xxx.abc.com并获得了SSO的token,然后将该信息保存至该域名的cookies中。
再登陆xxx.bbc.com页面,通过页面执行js的src属性,跨域获得xxx.abc.com的cookie中的信息。然后就可以进行用户token合法性验证了。
xxx.bbc.com页面跨域访问http://xxx.abc.com/getToken.jsp,将获得的js变量getCookies的值显示到页面上
<div id="cookie">null<div/> <script type="text/javascript" src="http://xxx.abc.com/getToken.jsp"></script> <script type="text/javascript"> document.getElementById('cookie').innerHTML=getCookies; </script>
xxx.abc.com/getToken.jsp 将返回值是一个js变量,该接口将访问本站点的用户cookies信息赋予js变量。
代码如下
<%
Cookie[] cook = request.getCookies();
String js = "var getCookies='";
for(int i=0; i<cook.length; i++) {
js += cook[i].getName()+":"+cook[i].getValue();
}
js +="'";
out.print(js);
%>