3-HTTP协议

HTTP协议

  HTTP协议,即超文本传输协议,用来规定服务端和客户端的信息传递规范。主要由HTTP请求报文和响应报文组成

  • 一个响应对应一个请求
  • 响应是被动的,不能主动发起
  • 是建立再TCP协议之上
  • HTPP默认端口80、HTTPS默认端口443

HTTP协议特点:

  • 无连接:服务器每次只处理一个请求,收到客户端应答后,立即断开连接
  • 无状态:服务器不会保存请求的任何痕迹
  • 简单快速:传输的报文格式简单、内容少
  • 灵活:允许传输的数据类型多,如html、json、xml、text

HTTP请求报文

由以下四部分组成:

1、请求行

  • 请求的第一行,且独占一行
  • 包含请求方法、请求路径、请求协议及版本

2、请求头

  • 第二行开始到N行,由键值对组成
  • User-Agent:告诉服务器客户端的相关信息
  • Cookie:带给服务器的cookie信息
  • Referer:告诉服务器,此请求是从哪个页面上发出来
  • Content-Type :
    ① 表示客户端向服务端传输数据的格式
    ② 常见的Content-Type值有:x-www-form-urlencoded、JSON、XML 等,
    浏览器默认 x-www-form-urlencoded 格式

3、空行

4、请求消息体

  • 即请求正文,Get请求一般没有请求正文

HTTP响应报文

由以下四部分组成:

1、状态行

  • 协议及版本、状态码及状态描述组成
  • 状态码:
    1xx:消息类,一般告诉客户端,请求已收到,正在处理
    2xx:处理成功
    3xx:重定向
    4xx:客户端的错误,如请求不存在的资源
    5xx:服务端的错误

2、响应头

  • 第二行开始到N行,由键值对组成
  • Content-Type :服务端向客户端传输数据的格式

3、空行

4、响应消息体

  • 响应内容(文件、json)

HTPP请求方法

主要的请求方法有GET、POST、DELETE、PUT,最常用的是前两个。

GET方法特点:

  • 不安全,数据置于请求行,浏览器地址栏可见
  • URL长度会被浏览器限制,一般在2000字符内
  • 请求响应速度快
  • 是默认的请求方法,不需要提交大量数据、无敏感、无保密数据时使用
  • 可能会被缓存
  • 请求可能被保留在浏览器的历史记录中

POST:

  • 安全,数据置于请求体中,浏览器地址栏不可见
  • 提交的数据大小不受限制
  • 请求响应速度慢
  • 需要提交大量数据,有敏感、保密数据时使用
  • 不会被缓存
  • 请求不会被保留在浏览器历史记录中

Cookie和Session

  因为HTTP协议是无连接状态,所以服务器不会保留请求的状态,但是当我们需要服务器记住状态,这就需要Cookie、Session或Token

Cookie
Cookie由服务端生成,发送给客户端,浏览器会将Cookie的key/value存储在本地,下次请求同一网站时就发送这个Cookie给服务器

用处:利用cookie记住用户名

Session
Session由服务端产生,存在服务器内存中

  • Session是一个对象,由SessionID属性和invalidate()等方法
  • 有自己的管理急支,包括Session创建、销毁、超时机制
  • 销毁Session的方式
    ① 客户端调用Session的注销方法invalidate()
    ② 服务器宕机
    ③ Session超时,服务器自动销毁
    注:关浏览器不会销毁session

Cookie和Session实现登录原理

  1. 服务器产生Session,并把SessionID通过响应头返回给客户端
  2. 浏览器把这个SessonID存储在Cookie中,以后的每次请求,都会把Cookie中的所有内容通过请求发送给服务端
  3. 服务端从请求中获取SessionID的值,再把该SessionID与内存中的SessionID比较,相同则允许访问,否则拒绝访问

猜你喜欢

转载自blog.csdn.net/weixin_45128456/article/details/112623897