概述
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实现获取登陆用户信息所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复