公司的产品,采用多服务分摊压力,中间必须涉及的当然是单点登陆。一般的单点登陆都是通过去用户中心登陆,302或页面回调的方式,返回到登陆前的页面。
公司项目,想用户体验更好些,采用弹框登陆,可以考虑iframe或者form提交方式。iframe需要解决跨域通信的问题,当然也是有解决方案的。form提交的话,就存在用户名密码错误提示,还是需要在用户中心处理。
最后选择了jsonp的方案跨域提交,这也有一些问题,安全方面用户名密码get方式传递,可以考虑加入签名,防止原始密码泄漏。
在使用jsonp方式登陆的时候,测试反馈,IE没有办法登陆,其他浏览器却是可以。第一反应就是第三方设置cookie失效,以前其实也是遇到过的。在需要设置cookie的第3方站点,设置p3p header头。
response().addHeader("P3P", "CP=/"IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA/"");
教主文章的提到的简约方式,没有试。
(蜗牛做广告系统的时候,也有人反应说是,那时候用的自己的跨域通信,一开始是以为window.name导致的问题,后来突然想起了,最近才看的教主的文章,原来是浏览器安全问题,需要设置p3p。)