什么是cookie,使用正确的姿势在app中种植cookie

2019-03-22  本文已影响0人  风了个1

Cookie定义

百度百科是这么定义Cookie的,Cookie指某些网站为了辨别用户身份、进行 session跟踪而储存在用户本地终端上的数据。在前端开发识别用户身份的流程如下:

  1. 用户登录成功,获取token,保存token 到本地,同事保存一份token到NSHTTPCookieStorage中,下次在http请求的时候,默认httpRequest对象会默认带上NSHTTPCookieStorage中保存的cookie
  2. 用户在登录成功后,服务端会把cookie设置在NSHTTPURLResponse,客户端不需要重新设置cookie,只需要读取NSHTTPURLResponse中的cookie值然后保存在本地用户记录用户的登录状态

Cookie的作者

  1. 服务端
  2. 客户端(原生app,h5,pc)

Cookie的基本使用

Cookie相关类

1. version:版本号
2. name:名称
3. value:值
4. expiresDate:超时时间,注意:一定要设置,不然很可能设置的cookie无效
5. domain:设置的域名
6. path:设置路径,一般根目录设置“/”
7. HTTPOnly:只能用做发送http请求,不能作用于其他用户,保证cookie不被其他的js获取,比如你的页面接入了第三方js,如果这个js是恶意的,可以获取cookie里面的信息,那么很可能拿到用户的私密信息,所以建议使用设置HTTPOnly为YES,一般服务器在设置cookie时,也应该设置HTTPOnly
8. secure:是否只能通过加密连接发送到受信任的服务器(即通过SSL或TLS),不应该被交付给任何服务器,防止跨站点脚本漏洞的javascript应用程序。

在webView中设置cookie

缺点

  1. Cookie管理很麻烦,不能支持缓存页面Cookie
  2. 同样是由于进程间通信性能问题,HTTPBody字段被丢弃
    [request setHTTPMethod:@"POST"];[request setHTTPBody:[@"bodyData"dataUsingEncoding:NSUTF8StringEncoding]];[wkwebview loadRequest: request];

cookie设置注意项

  1. 必须设置过期时间:否则很容易会设置cookie后立马就会超时
  2. cookie自动丢失的问题:cookie存储在NSHTTPCookieStorage中,NSHTTPCookieStorage会持久化在本地,理论上只要app启动,就可以读取到设置过的cookie,但是偶发性的cookie被丢失,丢失原因不明,有相关资料显示cookie在客户端中五分钟又可能存在丢失的情况,这种情况比较偶发,
  3. cookie内存最大为4k,不要使用过长的cookie的值,设置过多的cookie
上一篇 下一篇

猜你喜欢

热点阅读