可以先看下这边文章: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代码大概是这么写的

  1. <script type="text/javascript">
  2. $.ajax({
  3. type:"get",
  4. dataType:"jsonp",/*-----------------------*/
  5. url: "http://sso.jd.com/setCookie?t=sso.minitiao.com&callback=?",/*-----------------------*/
  6. crossDomain:true,/*-----------------------*/
  7. success: function(data){
  8. },
  9. beforeSend:function(){
  10. },
  11. complete:function(data,status){
  12. }
  13. });
  14. </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

最新文章

  1. HP网络打印机--如何添加打印机
  2. HttpServletResponse常用的方法
  3. Android课程---Android Studio使用小技巧:提取方法代码片段
  4. C语言二维数组作为函数的参数
  5. 【Java线程】锁机制:synchronized、Lock、Condition
  6. NavigationBar隐藏
  7. idea live template
  8. 树莓派配置允许WINDOWS远程桌面 x11nvc+xrdp
  9. I Hate It HDU - 1754
  10. Go 语言常量
  11. Java导出压缩包工具类
  12. js练习
  13. Delphi ClientDataSet复制记录
  14. json.dump和json.dumps区别,json.load和json.loads的区别
  15. 引用文章 如何在lambda中引入递归调用
  16. A class of finite groups with abelian 2-Sylow subgroups By CHIH-HAN SAH
  17. BAT修改文本内容
  18. 有谁知道Delphi中&quot;窗口&quot;的创建过程?
  19. 简单5步,释放Mac磁盘空间
  20. android studio如何生成签名文件,以及SHA1和MD5值

热门文章

  1. 一 :了解MVC
  2. kubernetes之node隔离与恢复
  3. day_03比特币转账的运行原理
  4. Android使用WebView打包网页成app
  5. spring 的自动定时任务
  6. 小白学习MongoDB笔记(一)&#183;下载及安装MongoDB
  7. vue 自定义指令的魅力
  8. 一段有关线搜索的从python到matlab的代码
  9. 牛客CSP-S提高组赛前集训营3
  10. ubuntu系统火狐无法播放网页视频