HTTPS和HTTP介绍

https

工作流程

在这里插入图片描述

证书如何签字

ahZIt1.png

非对称加密的特点

  1. 任何经过A的公钥进行过加密的信息,只有A的私钥才能解密
  2. 任何有公钥的人可以确认对方发送的信息是被私钥加密过的

http

工作流程

ahMlTg.png

特性

  • 被http控制的特性:
    • 缓存
    • 开放同源限制
    • 认证
      • 用HTTP Cookies来设置指定的会话
    • 代理和隧道
      • 通常情况下,服务器和/或客户端是处于内网的,对外网隐藏真实IP地址。因此HTTP请求就要通
        过代理越过这个网络屏障。
    • 会话

http报文

请求报文响应报文

在这里插入图片描述

请求消息和响应消息的结构

结构包括:起始行/状态行,请求头/响应头,空行,主体

在这里插入图片描述

状态码分类表

类别 原因短语
1xx Informational(信息性状态码) 接受的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向) 需要进行附加操作以完成请求
4xx Client error(客户端错误) 客户端请求出错,服务器无法处理请求
5xx Server Error(服务器错误) 服务器处理请求出错

MIME类型

是一种标准化的方式来表示文档的性质和格式

扫描二维码关注公众号,回复: 11837832 查看本文章

浏览器通常使用MIME类型( 而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正
确的MIME类型附加到响应对象的头部是非常重要的。

在这里插入图片描述

HTTP/1x的缺点

  • 消息头不像消息主体一样会被压缩。
  • 两个报文之间的header通常非常相似,但它们仍然在连接中重复传输。
  • 无法复用。

缓存机制

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术

当web缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。

缓存需要合理配置,因为并不是所有资源都是永久不变的。重要的是对一个资源的缓存应截止到其下
一次发生改变(即不能缓存过期的资源)。

缓存的分类

  • 私有缓存(只能用于单独用户)
    • 请求头写Cache-Control:private
  • 共有缓存(可以被多个用户使用)
    • 请求头写Cache-Control:public
  • no-store(每次都从新发送请求,不会缓存)
  • no-cache(需要验证后才能缓存)

缓存的优势

  • 缓解服务器端的资源消耗和运行压力,提升服务器端的整体性能。
  • 减少服务器端资源加载的延迟,进而减少显示某个资源所用的时间。.
  • 减少对带宽造成的压力,避免网络阻塞问题的出现
  • Web站点变得更具有响应性

缓存的应用(只能缓存GET响应)

  • 检索成功后的响应,HTML文件,图片,文件
  • 不变的重定向:响应状态码为301。
  • 错误响应:响应状态码为404的一个页面
  • 不完全的响应:响应状态码为206,只返回局部的信息

在这里插入图片描述

对Cache-Control设置不同的属性

一般出现在响应头中

但是有浏览器兼容问题,可以用Pragma头代替,他的值和上图的值一样

a59L01.png

资源验证

在这里插入图片描述

一、验证方法

  1. Last-Modified(上次修改时间)和if-Modified-Since配合使用【对比上次修改时间以验证资源是否需要更新】
  2. Etag(数据签名)服务器返回

下次请求都发送if-Match就是服务器返回的Etag的值

【对比资源的签名判断是否使用缓存】

Cookie

aLLQDH.png

作用域

Domain和Path标识定义了Cookie的作用域

  • Domain标识指定了哪些主机可以接受Cookie
  • Path标识指定了主机下的哪些路径可以接受Cookie

有效期

Max- Age和Expires标识定义了Cookie的有效期,即Cookie的生命周期

  • 会话期Cookie
    • 浏览器关闭之后Cookie会被自动删除
    • 会话期Cookie不需要指定过期时间( Expires)或者有效期(Max- Age )。
  • 持久性Cookie
    • 持久性Cookie可以指定一个 特定的过期时间( Expires)或有效期(Max- Age )。

四、应用

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

访问和更新Cookie

在前端通过document.cookie创建,读取,修改,删除

一、数据格式

  • 多个数据用“;”分隔
  • 数据内容都是key=value格式的
  • 允许存储多个数据内容
  • 要设置作用域,才能用

二、创建和修改

document.cookie = newCookie;

修改是直接在原有的基础上添加

aOk7vj.png

用这个方法一次只能对一个cookie进行设置或更新

三、读取Cookie

在这里插入图片描述

四、删除 Cookie

在这里插入图片描述

解决跨域

CORS(跨域资源共享),新增一组HTTP首部字段,允许服务器声明哪些源站有权限访问哪些资源。

浏览器必须首先使用OPTIONS方法发起一个预检请求,从而获知服务端是否允许该跨域请求。

跨域资源共享机制的工作原理主要应用于三个场景:

  • 简单请求
    • 满足条件
      • 请求方法:get、head、post期中之一
      • 不得设置:Accept、Accept-L anguage、Content-L anguage、Content-Type头部信息
      • Content-Type的值为:text/plan、multipart/form-data、application/x-www-form-udlemcoded期中之一
    • 请求消息
      • 请求头每次请求自动生成一个Origin字段,此字段表示请求来源
    • 响应消息
      • 如果满足以上条件,再加上响应头有Access-Control-Allow-Origin:*就可以完成简单请求,期中*表明该资源可以被任意外域访问。
    • 注意
      • 如果服务器未正确响应首部,不会返回任何信息
  • 预检请求

和简单请求没什么区别,就是在发送请求之前先发送一个option请求,看服务器是否让请求

一、请求头差别

在这里插入图片描述

二、响应头(和普通的一致)

在这里插入图片描述

三、认证请求

如果要想对对于跨域XML HtpRequest请求,浏览器不会发送身份凭证信息。如果要发送凭证信息,需要

设置XML HttpRequest的某个特殊标志位。xmlHttpRequest.withCredentials = true;

将XML HttpRequ Jest的withCredentials标志设置为true,使得向服务器发送Cookies,服务器返回
响应首部字段Access-Control-Allow-Credentials: true。

猜你喜欢

转载自blog.csdn.net/CSDNzhaojiale/article/details/108202398