1.cookie的工作原理
(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户
————————————————
原文链接:https://blog.csdn.net/chen13333336677/article/details/100939030
2.能够记录用户访问次数
代码:
// 写cookies
function addCookie(name,value,expiresDays) {
var cookieString = name + " = " + escape(value);
cookieString = cookieString + "; expires = " + date.toGMTString();
document.cookie = cookieString;
}
//读取cookies
function getCookie(name) {
var strCookie = document.cookie;
var arrCookie = strCookie.split(";");
for(var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if (arr[0] == name) return arr[1];
}
return "";
}
var counter = getCookie('counter');
if (!counter) counter = 1;
else counter = parseInt(counter) + 1;
addCookie('counter', counter, date);
document.getElementById('counter').innerHTML = "您好,这是您第" + counter + "次浏览本页面!";
————————————————
版权声明:本文为CSDN博主「HGQ_Boy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HGQ_Boy/article/details/79810985
3.cookie的主要用途:
会话管理
:登陆、购物车等应该记住的其他内容
-
个性化
:用户偏好、主题或者其他设置 -
追踪
:记录和分析用户行为
4.cookie的分类:
带httponly属性的cookie
response.setHeader( "Set-Cookie" , "cookiename=httponlyTest;Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");
例如:
//设置cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly")
//设置多个cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "timeout=30; Path=/test; HttpOnly");
//设置https的cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; Secure; HttpOnly");
具体参数的含义再次不做阐述,设置完毕后通过js脚本是读不到该cookie的,但使用如下方式可以读取。
Cookie cookies[]=request.getCookies();
————————————————
原文链接:https://blog.csdn.net/qq_38553333/article/details/80055521
5. cookie是不可跨域名.
Cookie cookie = new Cookie("time","20080808"); // 新建Cookie cookie.setDomain(".helloweenvsfei.com"); // 设置域名 cookie.setPath("/"); // 设置路径 cookie.setMaxAge(Integer.MAX_VALUE); // 设置有效期 response.addCookie(cookie); // 输出到客户端
同域名下可以跨端口(也可以理解为不能跨IP地址)
6.cookie的修改和删除
Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。
7.cookie的setSecure(boolean secure)
代码(在服务器端):
全局设置Session-Cookie相交互部分属性
@WebListener
public class SessionCookieInitialization implements ServletContextListener {
private static final Log log = LogFactory
.getLog(SessionCookieInitialization.class);
public void contextInitialized(ServletContextEvent sce) {
log.info("now init the Session Cookie");
ServletContext servletContext = sce.getServletContext();
SessionCookieConfig sessionCookie = servletContext
.getSessionCookieConfig();
sessionCookie.setName("YONGBOYID");
sessionCookie.setPath(servletContext.getContextPath());
sessionCookie.setHttpOnly(true);
sessionCookie.setSecure(false);
log.info("name : " + sessionCookie.getName() + "\n" + "domain:"
+ sessionCookie.getDomain() + "\npath:"
+ sessionCookie.getPath() + "\nage:"
+ sessionCookie.getMaxAge());
log.info("isHttpOnly : " + sessionCookie.isHttpOnly());
log.info("isSecure : " + sessionCookie.isSecure());
}
public void contextDestroyed(ServletContextEvent sce) {
log.info("the context is destroyed !");
}
}
引自:
https://developer.aliyun.com/article/636115