Cookie的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie的使用相关的知识,希望对你有一定的参考价值。

  Cookie是常用的会话跟踪技术,通过在浏览器中保存会话的信息确定用户的身份。在web应用程序使用http协议传输数据时,一旦交换结束,客户端和服务端的连接就断开,下一次传输就必须要建立新的连接,这样服务器就无法跟踪会话,而Cookie就提供了一种会话跟踪的机制。

  Cookie存放这一小段的文本信息,当客户端请求服务器时,如果服务器需要记录该用户的状态,就可以使用response向客户端浏览器颁发一个Cookie,相当于一个服务器的通行证。客户端浏览器会把Cookie保存起来,当浏览器再次请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态,也可以根据需要修改Cookie的内容。

 

一. java中的Cookie使用

javax.servlet.http.Cookie 

构造方法:

Cookie cookie = new Cookie(name, value);

Getters/Setters:

cookie.setComment(purpose);          // String   cookie的说明
cookie.setDomain(pattern);           // String   可以访问该Cookie的域名,以“.”开头
cookie.setHttpOnly(httpOnly);        // boolean
cookie.setMaxAge(expiry);            // int        单位:秒   默认:-1    0代表删除
cookie.setPath(uri);                 // String    Cookie的使用路径   最后一个字符必须为“/”
cookie.setSecure(flag);              // boolean
cookie.setValue(newValue);           // String      
cookie.setVersion(v);                // int   

获取Cookie:

Cookie[] cookies = javax.servlet.http.HttpServletRequest.getCookies();

新增Cookie:

void javax.servlet.http.HttpServletResponse.addCookie(Cookie arg0)

 

二. js操作Cookie  

设置Cookie:

document.cookie = "name=" + username + ";password" + password + ";expires=" + exp.toGMTString();
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

读取Cookie:

 

var username = document.cookie.split(";")[0].split("=")[1];
var password = document.cookie.split(";")[1].split("=")[1];
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(‘;‘);
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==‘ ‘) c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
}

 

三. jquery操作Cookie

使用jquery操作Cookie时,需要导入jquery.cookie.js (下载地址:http://plugins.jquery.com/cookie/)

$.cookie(‘the_cookie‘);                                 // 读取 cookie 
$.cookie(‘the_cookie‘, ‘the_value‘);                    // 存储 cookie 
$.cookie(‘the_cookie‘, ‘the_value‘, { expires: 7 });    // 存储一个带7天期限的 cookie 
$.cookie(‘the_cookie‘, ‘‘, { expires: -1 });            // 删除 cookie
$.cookie("currentMenuID", "menuID", { path: "/"});      // 设置可以访问cookie的路径
$.cookie("currentMenuID", "menuID", { path: "/", expires: date});   //设置多个属性

同一web应用不同路径下可能获取不到保存的cookie,所有当域和路径不同时会产生不同的cookie,所以需要设置path

  

 

以上是关于Cookie的使用的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript单行代码,也就是代码片段

XSS:如何从 C# 中的字符串中删除 JS 片段?

Django cookie 横幅:window.wpcc 未定义

根据 ASP.NET 中的角色设置身份验证 cookie 超时长度

最详细的cookie和浏览隐私之间的关系

c#如何采集需要登录的页面