美文网首页
网络相关知识Session&Cookie

网络相关知识Session&Cookie

作者: woniu | 来源:发表于2019-06-12 20:37 被阅读0次

Session&Cookie作用

Session&Cookie都是对HTTP协议的无状态特点的补偿。所谓无状态就是:client多次向server端发送请求,server端是无法记住是不是同一个用户的。比如多次向购物车中添加商品,此时server端不知道是不是之前的用户在请求,这就是无状态。

一、cookie简介

cookie主要是用来记录用户状态,区分用户,cookie的状态是保存在客户端。

1、cookie是怎么生成的呢?

client端发送请求到server端,此时server端会生成cookie,再通过server端的响应将cookie携带上返回给client。

2、cookie是怎么彼此传递呢?

a、client发送的cookie在HTTP请求报文的cookie首部字段中。
b、server设置的HTTP响应报文的Set-Cookie首部字段将cookie传递给client。

3、怎么修改cookie?

a、新的cookie覆盖旧的cookie
b、覆盖规则:name、path、domain等都需要与原cookie一致,否则无法覆盖。

4、怎么删除cookie?

a、新的cookie覆盖旧的cookie
b、覆盖规则:name、path、domain等都需要与原cookie一致,否则无法覆盖。
c、设置cookie的expires=一个过去的时间点,或者maxAge=0

5、怎样保证cookie的安全?

a、对cookie进行加密处理(脚本攻击可以获取到cookie,不太安全)
b、只在HTTPS上携带cookie(更优,所有的内容都是通过HTTPS加密,也就保证了cookie的安全)
c、设置cookie为httpOnly,防止跨站脚本攻击

6、token在项目中的应用

在项目中我们由于实际需要,每个网络请求都需要添加token,那么我们不可能给每个请求都添加上token值。所以,我们最好封装好一个请求类,然后封装好必掉用的AFHTTPSessionManager中,在请求头里面添加token。如下:

此类方法必被调用。
+ (AFHTTPSessionManager *)sessoionConfigration:(BOOL)isHttps{
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
    if (isHttps) {
        NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"];
        NSData * certData =[NSData dataWithContentsOfFile:cerPath];
        NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil];
        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
            // 是否允许,NO-- 允许无效的证书
        [securityPolicy setAllowInvalidCertificates:YES];
        [securityPolicy setValidatesDomainName:NO];

            // 设置证书
        [securityPolicy setPinnedCertificates:certSet];
        manager.securityPolicy = securityPolicy;
    }
    manager.requestSerializer=[AFHTTPRequestSerializer serializer];
    manager.responseSerializer=[AFHTTPResponseSerializer serializer];
    [manager.requestSerializer setTimeoutInterval:REQUEST_TIMEOUT];
        //添加 User-Agent 后面追加版本号
    NSString* userAgent = [NSString httpHeaderAgent];
    if (userAgent) {
        [manager.requestSerializer  setValue:userAgent forHTTPHeaderField:@"User-Agent"];
    }

//把token存储到Header中
    [manager.requestSerializer setValue:[UserManager shareInstance].token forHTTPHeaderField:@"token"];


    return manager;
}
   AFHTTPSessionManager* manager = [WebService sessoionConfigration:[url hasPrefix:@"https://"]];
    return [manager GET:url
              parameters:body ·········

二、Session

session也是用来记录用户状态,区分用户的,只不过是存放到服务端的。

1、Session和Cookie的关系是怎样的?

Session需要依赖于Cookie机制来实现,具体说就是session依赖于Set-Cookie和Cookie机制的请求和相应的报文头部字段


session工作流程图

相关文章

  • 网络相关知识Session&Cookie

    Session&Cookie作用 Session&Cookie都是对HTTP协议的无状态特点的补偿。所谓无状态就是...

  • 网络相关知识

    前言 主要是参考其他人写的文章,做一个手抄记录,加深印象,后面都会附上原文链接。 1、 DNS介绍篇(原文(htt...

  • 网络相关知识

    计算机基础知识掌握TCP和HTTP相关知识即可。 这是一份详细 & 清晰的计算机网络基础 学习指南计算机网络:这是...

  • 网络相关知识

    一,常用协议与端口 FTP 文件传输协议,20传输数据,21控制telnet 远程控制协议 23smtp 简单...

  • 网络相关知识

    虽然一直在做开发,但对于网络知识了解还不是太深,做下笔记方便以后查阅 一、http的介绍 http 超文本传输协议...

  • 网络相关知识

    一、HTTP 问题1:HTTP是什么? HTTP是超文本传输协议。 包含请求/响应报文(具体说出报文包含的字段)。...

  • 网络相关知识

    IP 地址与路由控制 IP地址的网络地址这一部分是用于进行路由控制。 路由控制表中记录着网络地址与下一步应该发送至...

  • Socket网络相关知识

    Socket网络相关知识 端口号(用来定位程序),有效端口065535其中01024是被系统使用或者保留的端口. ...

  • 前端知识:网络相关

    OSI 七层模型与 TCP/IP 五层模型 OSI 七层模型:物理层、数据链路层、网络层、传输层、会话层、展示层、...

  • 网络爬虫相关知识

    2019年12月19日 一.爬取数据 二.使用urllib爬取数据 1.获取静态数据 2.获取动态数据 http:...

网友评论

      本文标题:网络相关知识Session&Cookie

      本文链接:https://www.haomeiwen.com/subject/xhprfctx.html