Cookie和登录注册
2024-09-01 13:52:26
1. 什么是Cookie?
- 服务器通过 Set-Cookie 头给客户端一串字符串
- 客户端每次访问相同域名的网页时,必须带上这段字符串
- 客户端要在一段时间内保存这个Cookie
- Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间
- 大小大概在 4kb 以内
2. cookie的设置获取和删除
cookie是运行在客户端的,可以用JS来设置cookie.
首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。
- JS设置cookie:
document.cookie="name="+username;
- JS读取cookie:
var getCookie = function (name) {
var arr;
var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
};
- JS删除cookie:
var delCookie = function (name) {
setCookie(name, ' ', -1);
};
3. cookie的主要作用:
- 会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为)
4. cookie设置语法:
document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT;
path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";
- cookieName=mader :name=value,cookie的名称和值
- expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie过期的日期,如果没有定义,cookie会在对话结束时过期。日期格式为 new Date().toUTCString()
- path=/mydir: path=path (例如 '/', '/mydir') 如果没有定义,默认为当前文档位置的路径。
- domain=cnblogs.com: 指定域 (包括所有子域名)
- max-age=3600: 文档被查看后cookie过期时间,单位为秒
- secure=true: cookie只会被https传输 ,即加密的https链接传输
5. 相关问题:
我在 Chrome 登录了得到 Cookie,用 Safari 访问,Safari 会带上 Cookie 吗?
不会,因为浏览器会带上域名Cookie, Cookie 还可以根据路径做限制
Cookie 存在哪?
Windows 存在 C 盘的一个文件里
Cookie会被用户篡改吗?
可以,可以用Session 来解决这个问题,防止用户篡改
Cookie 有效期吗?
默认有效期20分钟左右,不同浏览器策略不同
后端可以强制设置有效期,具体语法看 MDN
Cookie 遵守同源策略吗?
也有,不过跟 AJAX 的同源策略稍微有些不同。
当请求 qq.com 下的资源时,浏览器会默认带上 qq.com 对应的 Cookie,不会带上 baidu.com 对应的 Cookie
当请求 v.qq.com 下的资源时,浏览器不仅会带上 v.qq.com 的Cookie,还会带上 qq.com 的 Cookie
最新文章
- Linux内核设计第四周——扒开系统调用三层皮
- 转!!Java JTable 根据表格内容 自动调整表格列宽
- discuz 模拟批量上传附件发帖
- mysql查找重复
- java.util.concurrent.Exchanger应用范例与原理浅析--转载
- javascript闭包的理解
- c语言";a<;b<;c";条件值的判定
- NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明
- 如何应对“改变现状”的失败";
- Hibernate之通过hibernate.cfg.xml配置文件访问数据库的例子
- nginx 设置进程title
- mybatis逆向工程使用步骤详解
- java实现微信支付之扫码支付
- python之旅十【第十篇】paramiko模块
- cocos2dx开发之util类&;方法——取范围随机数
- 关于微信JS SDK接口wx.previewImage预览接口的使用
- 当Jaxb遇到泛型
- shell变量常用方法
- url的命名与反向解析
- git —— 远程仓库(操作)
热门文章
- vue+element ctrl+s保存写法
- SpringBoot系列:六、集成Swagger文档
- 转:http协议学习系列(响应头---Response Headers)
- PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式
- [Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity
- java后端开发学习路线
- CSS基础-Flexbox
- 四、Zookeeper伪集群搭建
- 云服务器 ECS Linux 安装 VNC Server 实现图形化访问配置说明
- Docker 安装 Redis 需要注意的地方