HTTP协议

HTTP是什么

超文本传输协议;全称:HyperText Transfer Protocol,缩写:HTTP。HTTP是一种被用于客户端与服务端之间信息传输的通信协议,客户端向服务端发送请求消息,服务端依次返回响应消息;HTTP基于TCP协议,运行在OSI七层模型中的应用层。

  • HTTP是一种同步协议,只有在客户端向服务端发送请求后,服务端才会响应请求;服务端只能响应请求,无法主动与客户端建立连接;
  • 无状态。每一个HTTP请求都是唯一的,且不和任何一个其他请求相关联。因为服务器不会跟踪任何状态信息,所以不会记住客户端是否访问过,也就是说,每一次请求都不知道之前的请求做了什么。
  • 无连接。每一个请求仅在本次相应周期内发生连接,每次连接仅处理一个请求,服务端处理完客户端的请求,即断开连接。

HTTP请求报文由什么组成

每个HTTP请求报文都包含三部分:请求行,请求头,请求正文(请求体)。

请求行:

  • 指定请求方法,告诉服务器如何处理信息或资源;
  • 指定用于在服务器上查找资源的url;
  • 指定正在使用的HTTP协议版本。

 请求头:

请求头用于传递有关请求的更多信息,告诉服务器应如何处理客户端要求的信息。

 请求正文(请求体):

这是HTTP请求可选部分,用于向服务器发送附加数据。

 HTTP工作流程

  1. 客户端(浏览器)向服务器发送HTTP请求;
  2. 建立连接,TCP三次握手;
  3. 服务器接收请求;
  4. 服务器运行应用程序处理请求;
  5. 服务器向浏览器返回HTTP响应;
  6. 客户端(浏览器)收到响应。
  7. 断开连接,TCP四次挥手;

 每次客户端从服务器请求任何内容时,都遵循这个过程。

常见HTTP请求方法

GET:GET用于从服务器获取信息,一般用于搜索查询和筛选数据之类的操作。是最常用的没有请求体的方法,每次打开网站时,都会触发GET请求网站内容。另外,GET相当于读取操作。GET主要有以下特征:

  • 请求参数在请求行中,拼接在url后面,仅支持字符传数据类型;
  • 值的长度限制通常为255个字符。值得注意的是,GET提交数据本身没有长度限制,是因为浏览器及服务器对url长度的限制;
  • GET请求传递的参数会存储在浏览器历史记录中;

HEAD:HEAD方法类似于GET,也是从服务器请求资源,不同的是,服务器仅传回响应头,而不是整个响应体。如果在不需要下载文件的情况下,检查文件是否存在时,HEAD更合适,因为GET会获取整个文件。

POST:POST用于向服务器发送数据,可以使用POST请求添加或更新数据。常用于提交表单数据,POST是非幂等的。具有以下特征

  • 通过请求体传递数据,在浏览器url中不可见;
  • POST传递的值不会存储在浏览器历史记录中;
  • POST发送的数据长度没有限制;
  • 支持不同的数据类型,如字符串、二进制、整数等。

PUT:PUT类似于POST,区别在于PUT是幂等的,重复执行相同的PUT请求将产生同样的结果。

PATCH:PATCH类似于POST和PUT方法,用于对目标资源的部分更新,PUT会替换整个资源,PATCH更新目标资源的部分内容;PATCH与POST都是非幂等的。

DELETE:DELETE通过指定的url对目标资源进行删除,如果资源存在,它会被删除;如果重复调用DELETE通常会返回404状态码,因为目标资源已经被删除。

OPTIONS:OPTIONS返回服务器支持的方法和操作,而且它允许通过响应头返回服务器允许的HTTP请求方法列表。

常见HTTP状态码

2xx--请求成功

  • 200:我们最喜欢的状态码,请求成功;
  • 201:请求成功,创建了一个新资源,通常是在POST或PUT请求后响应;
  • 202:已收到请求,但未进行响应。

3xx--重定向

  • 301:请求资源的url已经永久更改,响应中给出新的url;
  • 302:请求资源的url临时更改,将来可能会对url进一步更改。客户端后续的请求应该继续访问当前地址;
  • 303:指示客户端应使用GET请求,在另一个url上获取请求的资源;
  • 304:涉及HTTP缓存。服务器的资源没有发生改变,所以客户端可以直接使用浏览器本地缓存。

4xx-- 客户端错误

  • 400:服务端无法理解请求语法。通常是请求数据格式、语法错误;
  • 401:未经授权,需要进行身份验证;
  • 403:用户没有权限,服务器拒绝请求;
  • 404:服务器找不到资源;

5xx-- 服务器错误

  • 500:服务器内部错误,不知如何处理;
  • 501:服务器不支持该请求方法,无法处理;
  • 502:服务器作为网关获取处理请求所需响应时,得到了无效响应;
  • 503:服务器尚未准备好处理请求。常见原因是服务器维护、停机或过载;
  • 504:服务器作为网关,无法及时获得响应;
  • 505:服务器不支持请求中使用的HTTP版本;

 HTTP与HTTPS

HTTP以明文的方式进行数据传输,所以HTTP是不安全的,为解决HTTP的安全性问题,诞生了HTTP的好大哥--HTTPS。

HTTPS英文全称Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全性协议。是对HTTP拓展的安全版本,默认使用端口443进行数据通信。HTTPS在HTTP的基础上使用SSL加密协议进行数据加密传输。

两者的区别:

HTTPHTTPS
地址栏为http://地址栏为https://
默认端口80默认端口443
明文传输,不安全具有安全性的加密传输
不需要CA证书需要CA证书
加载速度快与HTTP相比,加载速度较慢,因为支持额外的安全性功能

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值