jquery 跨域 调用服务器js 单点登录 SSO

本文探讨了在不同应用服务器间实现单点登录(SSO)时,面对跨域挑战的解决策略,包括如何利用passport服务器的登录cookie在用户请求时自动判断登录状态,并通过AJAX方法(get、getJSON、getScript)跨域获取登录信息。
问题:由于项目实现需要单点登录(SSO)功能,passport服务器与各个应用服务器不在同一个域中,当用户登录了某一台应用服务器,则在访问其他应用时,不需要用户进行再次登录。
解决方案:passport服务器在用户浏览器中保存了登录cookie,当用户请求登录passport服务器时,passport服务器读取该cookie来判断是否需要用户输入用户名、口令来登录。

遇到的问题,由于各个应用服务器无法读取passport服务器的cookie,所以判断用户是否登录只能由passport服务器来完成。

服务器代码

                response.setContentType("text/plain");
		Writer w = response.getWriter();
		if (Context.getCurrentUser(request.getSession())!=null){
			w.write("var data = {result:\"true\"}");
		}else{
			w.write("var data = {result:\"false\"}");
		}
		w.flush();
		w.close();


代码1

$.get("${passport_server}/isLogin.do",function(data){
   altert(data.result);
});

上述代码data为null

代码2

$.getJSON("${passport_server}/isLogin.do",function(data){
 alert(data.result);
});

data仍然为空

代码3

$.getScript("${passport_server}/isLogin.do",function(data){
    alert(data.result);
});

返回值了

究其原因,jquery的get、getJSON和getScript都是由ajax这方法来实现,不同的是getScript是返回服务器上的js代码并执行,其他的都是返回json格式等结果,只有getScript可以跨域来返回结果,其他的都不能返回结果



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值