跨域sso实现
一.server
1.提供登陆页面(login.jsp)
2.提供登陆校检的controller(checkLogin)
二.client1
1.验证登陆的controller(login)
1.跳转到server的登陆页面(login.jsp),登陆时提交的url为自己client1的controller(login),login获取用户名和密码,通过http访问servet的checkLogin,并获得登陆结果
3.写cookie的Controller(addCookie)
4.当登陆失败,跳转到server的(login.jsp),当登陆成功,跳转到client1的main.jsp
5.main.jsp添加隐藏的iframe,登陆成功后访问每个client的addCookie的Controller,完成所有客户端cookie的写入。一旦一个客户端登陆成功,其他客户端的cookie也写入了,所以其他客户端相当于也登陆了
三.client2
1.验证登陆的controller(login)
1.跳转到server的登陆页面(login.jsp),登陆时提交的url为自己client2的controller(login),login获取用户名和密码,通过http访问servet的checkLogin,并获得登陆结果
3.写cookie的Controller(addCookie)
4.当登陆失败,跳转到server的(login.jsp),当登陆成功,跳转到client2的main.jsp
5.main.jsp添加隐藏的iframe,登陆成功后访问每个client的addCookie的Controller,完成所有客户端cookie的写入。一旦一个客户端登陆成功,其他客户端的cookie也写入了,所以其他客户端相当于也登陆了
四.跨域写Cookie的几种方式
1.通过html的script标签的src属性,因为src额可以跨域请求资源,将多个script的多个src指向不同域的服务器的写cookie的方法。(IE可能有P3P的限制)
2.通过服务器的redirect实现重定向到其他域的服务器的写cookie的方法(不实用,一次只能重定向一次,有多台客户端的时候很麻烦)
五.跨域读Cookie的方式
1.通过html的script标签的src属性,在a域访问b域的获取cookie的方法,此方法直接返回var cookie = ‘xxx:xxx’并执行,a域页面就有了此变量