通过JSONP 模拟简单的单点登录

 关于JSONP 的介绍请参考:http://chinazblz.blog.163.com/blog/static/93939173201042485426995/

 本实验模拟在两个不同域 www.sso.com www.ss.com 下进行单向单点登录。

但用户访问 www.sso.com 时(A 服务器),会在浏览器中种下 cookie。

当用户访问 www.ss.com 时(B 服务器),则会通过jsonp 从本浏览器的 sso.com 域中获取到cookie中的用户名,然后在页面进行显示

在 A 服务器中的登录和种Cookie,比较容易理解,这里重点讲一下 在A 服务器中的 jsonp.php

jsonp.php 是 A 服务器和B服务器进行通信的桥梁。在jsonp.php中要完成 读取和输出Cookie中 username 的值:

 

<?php

$callback = isset(
{1}

GET['callback']) ?
{1}

GET['callback'] : '';$json =
{1}

COOKIE['username'];$json = '"'.$json.'"';if (!empty($callback)) { $json = $callback . '(' . $json . ')';}echo $json;?>


 

 

在B服务器中则需要做2件事情:

1. 定义响应函数response 。 在响应函数中,对jsonp.php 返回的用户名进行显示

2. 通过script 标签,引入 jsonp.php?callback = response

 

<html>
	<head>
	<script type="text/javascript">
	    function response(words){  //通过cookie判断是否登录
		    if(typeof(words) != 'undefined'){
			
			var h1 = document.getElementById('welcome');
			h1.value = words;
			}		
		}
	</script>
	</head>	
	<body>
		
			<input type="text" id="welcome" />
			<script type="text/javascript" src="http://www.sso.com/SSO/jsonp.php?callback=response"></script>
		
	
	</body>
</html>

 

 


 

 

总的交互过程如下图:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值