京东商城跨域设置Cookie实现SSO单点登陆过程
2024-10-19 17:51:08
可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html
1、点击首页的登陆按钮跳转到京东的登陆中心https://passport.jd.com/new/login.aspx?ReturnUrl=http%3A%2F%2Fwww.jd.com%2F,然后输入用户名、密码验证,验证通过跳转到ReturnUrl指定的地址,也就是京东首页
2、首页通过Jquery.getJSON()方法发起http://passport.jd.com/new/helloService.ashx请求,跨域获取需要跨域设置登陆cookie的应用列表,返回一个Json数据
3、js遍历sso,通过jQuery.ajax()方法对其中的每条数据发起跨域的jsonp请求,我猜测京东的js代码大概是这么写的
- <script type="text/javascript">
- $.ajax({
- type:"get",
- dataType:"jsonp",/*-----------------------*/
- url: "http://sso.jd.com/setCookie?t=sso.minitiao.com&callback=?",/*-----------------------*/
- crossDomain:true,/*-----------------------*/
- success: function(data){
- },
- beforeSend:function(){
- },
- complete:function(data,status){
- }
- });
- </script>
请求的结果是这样的:
可以看到返回一个重定向的Response,而且是跨域的重定向,由于发起的是跨域的jsonp请求,所以浏览器会根据返回的重定向url发起一次请求,也就是最后的跨域设置Cookie的请求
4、浏览器发起sign请求跨域设置Cookie,请求和返回结果如下
返回的Response header中含有Set-Cookie项,这样就在sso.minitiao.com域名下设置了Cookie,可以打开sso.minitiao.com发现确实有了ceshi3.com这样一个Cookie
5、至此京东就完成了单点登录的全过程
http://blog.csdn.net/clh604/article/details/20365967
最新文章
- HP网络打印机--如何添加打印机
- HttpServletResponse常用的方法
- Android课程---Android Studio使用小技巧:提取方法代码片段
- C语言二维数组作为函数的参数
- 【Java线程】锁机制:synchronized、Lock、Condition
- NavigationBar隐藏
- idea live template
- 树莓派配置允许WINDOWS远程桌面 x11nvc+xrdp
- I Hate It HDU - 1754
- Go 语言常量
- Java导出压缩包工具类
- js练习
- Delphi ClientDataSet复制记录
- json.dump和json.dumps区别,json.load和json.loads的区别
- 引用文章 如何在lambda中引入递归调用
- A class of finite groups with abelian 2-Sylow subgroups By CHIH-HAN SAH
- BAT修改文本内容
- 有谁知道Delphi中";窗口";的创建过程?
- 简单5步,释放Mac磁盘空间
- android studio如何生成签名文件,以及SHA1和MD5值