HTTP协议

HTTP协议

什么是HTTP协议?

Hyper Text Transfer Protocol超文本传输协议

  • 分布式,合作式,多媒体信息系统服务

  • 面向应用层的协议

  • 基于传输层的TCP协议进行通信

  • 通用的,无状态的协议

什么是协议

使数据在网络通信的双方间到达,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

三大特点

  • 遵循请求响应模型

客户端向服务器发送请求,而服务器只能被动响应客户端的请求

  • 无连接

客户端向服务器发送请求时建立与服务器的连接。一次请求/响应结束后,客户端与服务器自动断开网络连接。

  • 无状态

协议对于不同次的请求/响应没有记忆能力。动态Web需要保存不同请求间的状态,但HTTP协议层面不支持状态保存,可用Session会话解决,实现状态管理。

HTTP协议请求

  • 请求组成

请求行,请求头,请求正文

  • 请求方式

1> 用户在浏览器地址栏中输入 URL 地址并回车向服务器发送请求(GET方式)

2>用户通过网页超链接发送请求(GET方式)

3>用户通过网页超链接发送请求(GET方式)

4>用户在网页上使用 AJAX 技术向服务器发送请求(任意方式)

GET和POST方法的区别

GET方法

用于获取服务器上的某个资源

下列是触发GET方法的请求

  • 在浏览器中直接输入 URL 回车或点击浏览器收藏夹中的链接,此时浏览器就会发送出一个 GET 请求。

  • HTML 中的 link、img、script 等标签的属性中放的 URL,浏览器也会构造出 HTTP GET 请求

  • 使用 Javascript 重点 ajax,也能构造出 HTTP GET 请求 各种编程语言(只要能够访问网络),就都能够构造出 HTTP GERT请求

特点

  • 首行里面的第一个部分就是 GET

  • URL 里面的 query string 可以为空,也可以不为空

  • GET 请求的 header 有若干个键值对结构

  • GET 请求的 body 一般是空的

POST方法

多用于提交用户输入的数据给服务器

多用于提交用户输入的数据给服务器

  • 通过 HTML 中的 form 标签可以构造 POST 请求

  • 使用 JavaScript 的 ajax 可以构造 POST 请求

特点

首行第一个部分就是 POST URL 里面的 query string 一般是空的 POST 请求的 header 里面有若干个键值对 POST 请求的 body 一般不为空(body 的具体数据格式,由 header 中的 Content-Type 来描述;body 的具体数据长度,由 header 中的 Content-Length 来描述

区别

GET 和 POST 其实没有本质区别,使用 GET 的场景完全可以使用 POST 代替,使用 POST 的场景一样可以使用 GET 代替。但是在具体的使用上,还是存在一些细节的区别。

GET 习惯上会把客户端的数据通过 query string 来传输(body 部分是空的);POST 习惯上会把客户端的数据通过 body 来传输(query string 部分是空的) GET 习惯上用于从服务器获取数据;POST 习惯上是客户端给服务器提交数据 一般情况,程序员会把 GET 请求的处理,实现成“幂等”的;对于 POST 请求的处理,不要求实现成“幂等” GET 请求可以被缓存,可以被浏览器保存到收藏夹中;POST 请求不能被缓存

 

HTTP协议响应

组成

状态行,响应头,空行,消息体

消息体支持数据类型

  1. x-www-form-urlencoded:一种轻型表单,只支持普通文本,优点是占用字节少

  2. form-data:全名为 multipart/form-data,会把表单内容分成多个部分,每个部分都支持不同的格式,优点是支持文件上传,缺点是占用字节多

  3. raw:使用的是纯字符串的数据上传方式(一般使用JSON格式字符串)

HTTP协议状态码

HTTP 状态码表示服务器端处理客户端的 HTTP 请求返回的处理结果状态信息,可以通过状态码判断客户端 HTTP 请求是否得到服务器正确处理

  • 404 表示客户端请求服务器未收到或无法处理

  • 500 表示服务器处理出现错误或异常


__EOF__

本文作者3DG
本文链接https://www.cnblogs.com/3-DG/p/17745331.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   3DG  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示