我是靠谱客的博主 冷傲火,最近开发中收集的这篇文章主要介绍JS实现跨域(jsp与php)存取cookie实现获取登陆用户信息,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JS实现跨域存取cookie实现获取登陆用户信息

在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值。每个cookie除了 name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。

Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.zdnet.com/devhead /index.html 建立了一个cookie,那么在http://www.zdnet.com/devhead/目录里的所有页面,以及该目录下面任何子目录里的页面都可以 访问这个cookie。这就是说,在http://www.zdnet.com/devhead/stories/articles 里的任何页面都可以访问http://www.zdnet.com/devhead/index.html建立的cookie。但是,如果http: //www.zdnet.com/zdnn/ 需要访问http://www.zdnet.com/devhead/index.html设置的cookes,该怎么办?这时,我们要把cookies 的path属性设置成“/”。

在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子: 如果想让 http://www.zdnet.com/devhead/filters/ 和http://www.zdnet.com/devhead/stories/共享cookies,就要把path设成“/devhead”。

Domain – 域。指定关联的WEB服务器或域。值是域名,比如zdnet.com。这是对path路径属 性的一个延伸。如果我们想让 catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。不能把cookies域属性设置成与设置它的服务器的 所在域不同的值。

Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是 “secure”,或者为空。缺省情况下,该属性为空,也就是 使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本 地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的 cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

问题:现在有两个项目,php网站和javaweb网站,现在二者都在阿里云服务器上部署,现在需要用户在本地浏览器登陆javaweb,而本地php项目需要获取javaweb的登录用户信息,如何实现?
解决方案:通过cookie的跨域存储实现。
具体代码:
(1)、 javaweb的js存信息

	setCookies("onlineuserid", result);
	function setCookies(name,value){  

			var Days = 30;   //cookie 将被保存30天

			var exp  = new Date();   //获得当前时间

			exp.setTime(exp.getTime() + Days*24*60*60*1000);  //换成毫秒

			document.cookie =name + "="+ value + ";expires=" + exp.toGMTString()+";path=/;domain=39.106.99.208";  

			}   

此处的domain需要设置为php项目的域名,此处我设置为两个项目所在的服务器Ip,所以此cookie两个项目都可以访问。
(2)、php项目取cookie

var onlineuserid="";
getCookie();
 function getCookie() {    
for(var i=0;i<document.cookie.split(";").length;i++){
		var online=document.cookie.split(";")[i].split("=");
		if(online[0]==" onlineuserid"){
			onlineuserid=online[1];
		}
}
getalldevice();
}
function getalldevice(){
	$('#tab tr:not(:first)').remove();
	postdata = {
			onlineuserid:onlineuserid
	};
	$.post("api.php?service=App.Device.Getalldevice",postdata,
	function(data){
		if(data.ret == 200){
			var devs = data.data.devices;
			devices = devs;
			getallpros();
			addsystem();
			getallpts();
			if(devs.length > 0){
				$.each(devs,function(index,item){
					var trstr = "<tr><td>"+item.id+"</td><td>"+item.name+"</td><td>"+item.systemname+"</td><td>"+item.sn+"</td><td>"+item.ptname+"</td><td>"+item.create+"</td><td><a href='javascript:void(0);' role='button' onclick="edit("+item.id+")"> <i class='icon-edit''></i></a> <a href='javascript:void(0);' role='button' onclick="del("+item.id+",'"+item.name+"')"> <i class='icon-remove' style='color:#f00;'></i></a></td></tr>";
					$("#tab").append(trstr);
				});
			}
		}
	}, "json"); 
}

此处将cookie取出处理后就可得到所存数据。

最后

以上就是冷傲火为你收集整理的JS实现跨域(jsp与php)存取cookie实现获取登陆用户信息的全部内容,希望文章能够帮你解决JS实现跨域(jsp与php)存取cookie实现获取登陆用户信息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部