首页 > 其他分享 >HTTP协议

HTTP协议

时间:2024-03-29 15:33:32浏览次数:25  
标签:协议 HTTP 请求 响应 服务器 服务端 客户端

HTTP协议简介

HTTP 协议 全称是 超文本传输协议,通讯双方是 客户端服务端

由于简洁方便,在手机与服务器、服务器与服务器、浏览器与服务器的通讯中都广泛使用,是 通讯 的首选协议之一。

最广泛使用的是HTTP/1.1版本

HTTP3 以前版本 (除了HTTP3) , 都是 基于 TCP 协议的, 所以要进行通讯,客户端 必须先 和服务端 创建 TCP 连接。

而且 HTTP 双方的信息交互,必须是这样一种方式:

  • 客户端 先发送 http请求(request)给 服务端

  • 然后服务端 发送 http响应(response)给 客户端

特别注意:HTTP协议中,服务端不能主动先发送信息给 客户端。

而且在1.1 以前的版本, 服务端 返回响应给客户端后,连接就会 断开 ,下一次双方要进行信息交流,必须重复上面的过程,重新建立连接,客户端发送请求,服务返回响应。

到了 1.1 版本, 建立连接后,这个连接可以保持一段时间(keep alive), 这段时间,双方可以多次进行 请求和响应, 无需重新建立连接。

HTTP请求消息

http请求消息部分组成

请求行 request line

http请求的第一行的内容,表示要操作什么资源,使用的 http协议版本是什么。

包含了3部分信息: 请求的方法,操作资源的地址url, 协议的版本号

GET /mgr/login.html HTTP/1.1

GET请求:获取资源,从服务器 获取 资源信息,

POST请求:添加资源信息,添加 资源信息 到 服务器进行处理(例如提交表单或者上传文件)

PUT请求:请求服务器 更新 资源信息 

DELETE请求:请求服务器 删除 资源信息 

HTTP还有许多其他方法,比如 PATCH、HEAD 等,不是特别常用

请求头 request headers

请求头是http请求行下面的 的内容,里面存放 一些 信息。

比如,请求发送的服务端域名是什么, 希望接收的响应消息使用什么语言,请求消息体的长度等等。

消息体 message body

协议规定 需要在 消息头和消息体 之间 插入一个空行, 隔开

请求的url、请求头中 可以存放 一些数据信息, 但是 有些数据信息( POST、PUT等请求,添加、修改的数据信息),往往需要 存放在消息体中。

HTTP响应消息

HTTP响应消息部分组成

状态行 status line

状态行在第一行,表示  服务端对客户端请求的处理结果

包含了3部分信息:协议版本、状态码(Code)、描述状态语句

常见的状态码:

2xx:通常 表示请求消息 没有问题,而且 服务器 也正确处理了。

3xx:这是重定向响应,常见的值是 301,302, 表示客户端的这个请求的url地址已经改变了, 需要 客户端 重新发起一个 请求 到另外的一个url。

4xx:

表示客户端请求有错误, 常见的值有:

400 Bad Request 表示客户端请求不符合接口要求,比如格式完全错误

401 Unauthorized 表示客户端需要先认证才能发送次请求

403 Forbidden 表示客户端没有权限要求服务器处理这样的请求, 比如普通用户请求删除别人账号等

404 Not Found 表示客户端请求的url 不存在

5xx:

表示服务端在处理请求中,发生了未知的错误。

通常是服务端的代码设计问题,或者是服务端子系统出了故障(比如数据库服务宕机了)

响应头 response headers

响应头 是 响应状态行下面的 的内容,里面存放 一些 信息。 作用 和 格式 与请求头类似

消息体 message body

协议规定 需要在 消息头和消息体 之间 插入一个空行, 隔开

本文仅用于学习过程中笔记使用;

资料来源:

白月黑羽-Web 开发简介 - 白月黑羽

标签:协议,HTTP,请求,响应,服务器,服务端,客户端
From: https://blog.csdn.net/T1798218285/article/details/137145913

相关文章

  • H5get请求重定向后页面没有跳转重定向的地址是什么问题;H5get请求重定向后页面不跳转自
    Ajax请求的处理:如果使用了XMLHttpRequest或FetchAPI进行GET请求,并通过异步处理来获取响应数据,那么浏览器不会自动跳转到重定向的地址。如果在H5的GET请求中,服务器返回了重定向响应(HTTP状态码为3xx),但页面没有跳转到重定向的地址,可能有几种可能的原因:JavaScript......
  • Uncaught (in promise) DOMException: Failed to execute 'setRequestHeader' on 'XML
    根据错误提示"Uncaught(inpromise)DOMException:Failedtoexecute'setRequestHeader'on'XMLHttpRequest':Theobject'sstatemustbeOPENED.",你遇到了一个错误,该错误表明在调用setRequestHeader方法时,XMLHttpRequest对象的状态必须是已打开(OPENED)的状态。解决此问......
  • TCP/IP:互联网通信的核心协议
    引言在当今数字化时代,互联网已经成为人类社会不可或缺的一部分,而TCP/IP协议则是支撑互联网运作的关键。无论是发送电子邮件、浏览网页,还是进行视频通话,TCP/IP协议都在背后默默地发挥着作用。本文将引领读者深入了解TCP/IP协议的核心概念,从其起源、结构到应用,全方位解析这一......
  • Modbus通讯协议中的四种字节顺序
    国内设备基本上是ABCD顺序,国外设备基本上是BADC顺序。低位优先字节交换。使用两个寄存器。使用IEEE754规范,如显示不正常可进行字节顺序交换位置即可。如下:FloatBig-endian字节顺序:ABCDFloatLittle-endian字节顺序:DCBAFloatBig-endianbyteswap......
  • [超细讲解]使用ohttps自动部署ssl证书
    ohttp链接......
  • 计算机网络-网络文件共享协议
    前言在计算机网络中,我们经常会遇到在不同计算机网络系统之间如何共享和访问文件的场景,并且在实际项目中有这样的需求,在Linux中需要动态的mount文件,需要选择合适的网络文件共享协议以满足并发,吞吐量等需求。这就涉及今天要讲的网络文件共享协议SMB和NFS。SMBvsNFS什么是SMBSM......
  • 自定义的基于System.Net.Http.HttpClient的WebClient,可以作为微信支付宝的发起请求时
    个人编写的,自己用于自己的微信api的请求的实现当中,源码公开,大家可以查看反编译源码。以下是使用方法:第一步搜索和安装zmjtool第二步发起请求1/**引入命名空间*/2usingZmjTool;34/**发起Get请求*/5using(varcl=newZmjTool.WebClient())6{7cl.......
  • Http协议
    目录HTTP工作原理HTTP工作原理浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址:当用户在浏览器地址栏输入一个URL(如www.example.com)并按下回车时,浏览器首先需要知道这个域名对应的IP地址是什么。浏览器会检查其本地缓存(如hosts文件或之前的DNS查询缓存),看看是否已经......
  • 说说 HTTP1.0/1.1/2.0 的区别?
     一、HTTP1.0HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本HTTP1.0 浏览器与服务器只保持短暂的连接,每次请求都需要与服务器建立一个TCP连接服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求简单来讲,每次与服务器交互,都需要新......
  • iOS系统下最佳的3款HTTP抓包工具:Thor、克魔助手和Http Catcher
     引言在苹果手机的iOS系统相对封闭的情况下,抓包工具并不是很常见。大多数人可能对这类工具并不熟悉,除了少数安全专家之外,一般用户很少会接触到这些工具。然而,在某些特定场景下,比如网络调试、安全测试等,抓包工具的作用不可忽视。本文将介绍三款在iOS系统下比较优秀的HTTP抓包App......