千家信息网

Cookie有什么作用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"Cookie有什么作用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Cookie有什么作用"吧!1Cookie是什么CookieC
千家信息网最后更新 2026年10月31日Cookie有什么作用

这篇文章主要讲解了"Cookie有什么作用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Cookie有什么作用"吧!


1

Cookie是什么

  • Cookie

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

插曲Session

  • Session

由于HTTP协议是无状态的协议,所以当服务端需要记录用户状态时,就需要用某种机制来识别具体的用户,这个机制就是Session。

2

Cookie有什么用

笔者以简书显示内容为繁体还是简体为例,来介绍Cookie的用处:


(1)当我们使用浏览器访问jianshu.com时,简书服务端不知道浏览器的信息,默认情况下,浏览器显示内容为"简体";


(2)当我们设置浏览器显示内容为"繁体"时,浏览器将显示繁体内容;


(3)当我们关闭浏览器,再重新打开浏览器,发现简书的显示内容仍然会是繁体;笔者认为原因是简书服务端可能给浏览器做了一个唯一标识的记录,放置到自己的Session中,当浏览器重启后,再去服务端请求简书内容,发现当前浏览器需要显示为繁体,便下发了繁体显示内容;


(4)如果没有使用Cookie,因为HTTP协议是无状态的,那么我们设置的显示内容为繁体或者简体后,当我们打开新的页面或关闭浏览器重新打开的时候,之前设置的显示繁体或者简体便不存在了。


3

Cookie的类型

笼统地说,Cookie分为2类:会话Cookie和 持久Cookie

会话Cookie是一种临时Cookie,它记录用户访问长点是的设置和偏好。用户退出浏览器时,会话Cookie就被删除了。

持久Cookie的生存时间更长一些,他们存储在硬盘上,浏览器退出,计算机重启时,他们仍然存在。通常用持久Cookie维护某个用户会周期性访问的站点的配置文件或登录名。

会话Cookie和持久Cookie之间的唯一区别就是他们的过期时间。没有指定Expires(过期时间)时,默认为会话Cookie。

以简书为例:看下简书的会话Cookie和持久Cookie:

上图表明:jianshu.com的cookies

持久Cookie:

  • expires 过期时间为2018年4月9日星期二 Tue,09 Apr 2019 13:31:57 -0000

  • 笔者猜测这个值表示的意思是当前的某个时间减去0000,以达到作为持久Cookie的目的

  • domain 为.jianshu.com

  • Path 为 /

  • Secure为YES

  • Http only 为true;

会话Cookie:

  • local:zh-CN 显示为简体;

包括会话Cookie,笔者以为关闭浏览器后会话Cookie就会消失,不过笔者的如下测试结果,不确定算不算是会话Cookie消失的一种体现。首次启动浏览器显示的会话Cookie为:

local:zh-CN;

path:/;

default_font:font1;

设置过繁体的情况:

local:zh-TW;

path:/;

default_font:font1;

然后刷新jianshu.com,显示内容,就只会显示

local:zh-CN

或是

local:zh-TW

不确定这个算不算是会话Cookie在关闭浏览器后,就消失了。读者也可以自己测试一下。有做服务端的同学知道的话,敬请告知。

4

Cookie的工作流程

笔者仍以浏览器打开简书显示内容字体为"简体"或是"繁体"为例阐述Cookie的工作流程。

(1)当我们使用浏览器首次访问jianshu.com时,简书服务端不知道浏览器的信息,默认情况下,浏览器显示内容为"简体"。服务端对浏览器创建一个Session;

(2)当我们设置浏览器显示内容为"繁体"时,会通过Cookie的方式设置local为zh-TW,给服务端发送请求,并且得到的响应会是设置浏览器的显示内容为"繁体",服务端同事会更新Session中的信息为zh-TW(繁体);

(3)当我们关闭浏览器,会话消失的情况下,然后我们再重新打开浏览器,发现简书的显示内容仍然会是繁体,笔者认为这个是因为简书服务端Session存储着浏览器应该显示字体,(比如服务端存储着浏览器的某个唯一的id,然后当重新打开浏览器,对服务端做请求时,服务端根据之前的Session下发繁体内容)。

5

Cookie的属性

  • Domain(域):Cookie的域;浏览器只向指定域中的服务器主机名发送Cookie,这样服务器就将Cookie限制在了特定的域中。jianshu.com域就与jianshu1.jianshu.com和jianshu1.jianshu2.jianshu.com相匹配,但与js.com就不匹配了。

  • Path(路径):通过这个属性可以为服务器上特定的文档分配Cookie,如果Path属性是一个URL路径前缀,就可以附加一个Cookie,路径/foo,与/foobar和foo/bar.html相匹配,路径"/"与域名中所有的内容都匹配。

  • Secure(安全):是否只有在HTTP使用SSL连接时才发送这个Cookie;

  • expires(过期):从格林尼治标准时间1970年1月1日00:00:00开始的过期秒数;

  • name(名字):Cookie变量的名字;

  • value(值):Cookie变量的值;

6

iOS中NSHTTPCookie

常用属性:

  • NSHTTPCookieDomain domain:cookie的域;

  • NSHTTPCookiePath path:Cookie的path;

  • NSHTTPCookiePort portList:Cookie的端口列表;

  • NSHTTPCookieName name:Cookie的名字;

  • NSHTTPCookieValue value:Cookie的值;

  • NSHTTPCookieVersion version: Cookie的版本;

  • NSHTTPCookieExpires expireDate:Cookie的过期时间;

  • NSHTTPCookieDiscard sessionOnly:一个布尔值,表示cookie是否应该在会话结束的时候被丢弃(不管过期日期);

  • HTTPOnly:指定客户端不要与JavaScript应用共享Cookie,以防止跨站脚本攻击;

  • NSHTTPCookieSecure secure:指定Cookie只会用在HTTPS连接而非HTTP连接;

  • properties:Cookie的属性;

  • NSHTTPCookiePropertyKey:定义cookie属性字典中支持的常量;

  • NSHTTPCookieComment comment:Cookie的说明文字

  • NSHTTPCookieCommentURL commentURL:cookie的说明URL;

  • NSHTTPCookieAcceptPolicy:Cookie的访问权限,NSHTTPCookie由NSHTTPCookieStorage管理。

  • NSHTTPCookieAcceptPolicyAlways:存储所有的cookie;

    NSHTTPCookieAcceptPolicyNever:不会存储cookie;

    NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:只保存域值和请求域相匹配的Cookie;


7

iOS 网络请求使用Cookie

客户端的请求头里边的cookie的header,key为"cookie"

服务端响应客户端的时候,响应头中的cookie的header,key为"set-cookie"

网络请求使用AFN携带Cookie 测试AFN网络请求携带Cookie,笔者使用的是访问juejin.im的时候携带Cookie,效果如下图:

相关代码如下:

 NSString *urlString = @"https://juejin.im";    AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];    sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];    [sessionManager.requestSerializer setValue:@"QiShareNameAFN=QiShareValueAFN;QiShareTokenAFN=QiShareTokenValueAFN" forHTTPHeaderField:@"cookie"];    [sessionManager GET:urlString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {    }];

当需要设置多个cookie值的时候,使用cookieKey1=cookieValue1 ;cookieKey2=cookieValue2;的方式,使用分号分隔开每一对cookieKey及Value。

  • 网络请求使用NSURLSession携带Cookie

测试NSURLSession网络请求携带Cookie,笔者使用的是访问jianshu.com的时候携带Cookie,效果如下图:


相关代码如下:

    NSURL *url = [NSURL URLWithString:@"https://www.jianshu.com"];    NSMutableURLRequest *mRequest = [NSMutableURLRequest requestWithURL:url];    mRequest.HTTPMethod = @"GET";    [mRequest setValue:@"QiShareName=QiShareValue;QiShareToken=QiShareTokenValue" forHTTPHeaderField:@"cookie"];    NSURLSession *session = [NSURLSession sharedSession];    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:mRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {    }];    [dataTask resume];

感谢各位的阅读,以上就是"Cookie有什么作用"的内容了,经过本文的学习后,相信大家对Cookie有什么作用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

浏览器 浏览 内容 服务 繁体 笔者 用户 属性 时候 时间 情况 网络 存储 作用 路径 测试 信息 名字 客户 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 喔噻互联网科技有限公司 广东猪兼强互联网科技有限公司 上海卓越科技互联网 A股互联网金融科技公司 互联网最新的科技 互联网 卓越科技 善班互联网科技 齐家互联网科技 奇酷互联网络科技公司 上游互联网科技 太原新华互联网科技学校怎么样 天速互联网络科技有限公司 南平创想时代互联网科技有限公司 南通创西澳互联网科技有限公司 郑州欣桑互联网科技有限公司 上海乐五互联网科技有限公司 东风日产互联网科技公司叫什么 前海云享互联网科技 小牛互联网科技有限公司地址 互联网科技公司华为 互联网为科技 奇酷互联网科技公司 互联网科技的未来发展 江苏南京365互联网科技 崇明区互联网教育科技诚信经营 知域互联网科技有限公司大骗子 注册互联网科技公司经营范围大全 上海京穆互联网科技有限公司 互联网科技大会大佬
0