HTTP协议浅析(8种请求方法、GET和POST区别、幂等性、HTTP和HTTPS)

HTTP协议浅析(8种请求方法、GET和POST区别、幂等性、HTTP和HTTPS)

本文为笔者学习整理总结,若有任何不严谨或错误之处,还望不吝指出!

本文内容:

一、什么是 HTTP 协议?
二、8 种请求方法
三、GET 和 POST 区别?
四、幂等性
五、HTTP 和 HTTPS ?

一、什么是 HTTP 协议?

HTTP 协议是 Hyper Text Transfer Protocol 超文本传输协议的缩写,是用于万维网服务器与本地浏览器的传送协议。HTTP 属于应用层面向对象的协议,基于 TCP/IP 通信协议。

主要特点:

  • 简单快速,客户端向服务器请求时,只需要传送请求方法和路径。由于 HTTP 协议简单,使得服务器程序规模较小,因而通信速度很快。
  • 灵活,HTTP 允许传输任意类型的数据对象。
  • 无连接,每次连接只处理一个请求,服务器处理完客户端的请求,并受到客户的应答后,即断开连接。
  • 无状态,即对事务处理没有记忆功能,这意味着如果后续处理前面的信息,则它需要信息重传,这样可能导致每次连接传送的数据量增大。
  • 支持 B/S 和 C/S 模式。

二、8 种请求方法

  1. OPTIONS:返回服务器针对特定资源所支持的 HTTP 请求方法,也可以利用其向 web 服务器发送 * 的请求来测试服务器的功能性。
  2. HEAD:向服务器索与 GET 请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
  3. GET:向特定的资源发出请求,它的本质就是发送一个请求来取得服务器上的某一资源。
  4. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件等)。数据被包含在请求体中。
  5. PUT:向指定资源位置上传最新内容。
  6. DELETE:请求服务器删除 Request-URL 所表示的资源。
  7. TRACE:回显服务器收到的请求,主要用于测试或诊断。
  8. CONNECT:协议中预留给能够将连接改为管道方式的代理服务器。

三、GET 和 POST 区别?

首先, GET 和 POST 方法都是基于 TCP/IP 协议,也就是说,两者的数据传输都是建立在 TCP 的连接,所以,如果从两者的本质来讲并没有多大的区别,你非要给 GET 方法加上 request body,给 POST 方法加上 URL 参数都是行得通的,HTTP 协议对于 GET 和 POST 其实并没有长度限制。

因而,两者的区别更多地体现在使用规范上,从使用规范上来说:

  • GET 浏览器回退是无害的,而 POST 会再次提交请求。
  • GET 产生的 URL 地址可以被书签收藏,并且被浏览器缓存,而POST不能书签收藏也不能缓存。
  • GET 只能进行 URL 编码,而POST 支持多种编码方式。
  • GET 参数通过 URL 传递,并且长度有限制,而 POST 放在 request body 并且长度没有限制。并且,正因为这个原因, GET 比 POST 更不安全,因为参数暴露在 URL 中。

最后一个小细节:

  • GET 产生一个 TCP 数据包,而 POST 产生两个 TCP 数据包。

对于 GET 请求,浏览器会把 http header 和 data 一起发送出去,服务器响应 200。

而 POST 请求,浏览器会先把 http header 发送出去,服务器响应 100,然后浏览器再发送 data,服务器响应 200。(当然了,并不是所有浏览器,Firefox只发一次)

四、幂等性

4.1 什么是幂等性

幂等性指的是一次请求和多次请求某一资源具有同样的副作用。比如,你采用 GET 请求银行账户的余额,虽然结果不一定相同,可是并无副作用,因此是幂等的。而如果采用 POST 请求提交扣款,多次提交产生不同的副作用,因此不满足幂等性。

4.2 HTTP 的 GET、DELETE、PUT、POST 的幂等性

  • GET 请求用于获取资源,无副作用,所以是幂等的。
  • DELETE 请求用于删除资源,有副作用,但是,DELETE 同一资源,无论调用一次还是调用多次,其副作用是相同的,因此也满足幂等性。
  • PUT 方法用于创建或更新操作,有副作用,与 DELETE 相同,对同一资源无论调用一次还是多次,其副作用是相同的,因此也满足幂等性。
  • POST 方法与 PUT 方法的区别主要在于幂等性,POST 不具备幂等性,因为 POST 请求每次都会创建一个文件,而 PUT 方法会在服务器验证是否有 ENTITY,若有则更新该 ENTITY 而不是重新创建。

五、HTTP 和 HTTPS ?

见另一笔记博文:

http与https的区别、优劣、原理浅析

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值