IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP学习笔记 -> 正文阅读

[网络协议]HTTP学习笔记

HTTP

超文本传输协议,一种无状态的(不缓存),以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活互动

HTTP报文格式

HTTP协议分为请求报文与响应报文两种结构,两种结构都由三部分组成:

  • 起始行:描述请求或响应的基本信息

  • 头部字段集合:使用key/value形式详细说明报文

  • 消息正文:实际传输的数据,可以是纯文本、图片、视频等

    ?

  1. 请求行报文格式

  • METHOD:请求方法。如GET/HEAD/PUT/POST,表示对资源的操作

  • URL:请求目标。表示请求方法要操作的资源

  • VERSION:http版本号。

  1. 响应行报文格式

  • VERSION:http版本号

  • STATUS CODE:表示处理的结果,如200(成功)/500(服务器错误)

  • REASON:原因。作为状态码的补充

  1. HTTP头字段

    为key:value形式,最后用CRLF换行表示字段结束如,Content-type:application/json。头字段不仅可以使用已有头,也可以添加自定义头

    ??头字段注意事项:

    • 字段名不区分大小写,字段名里不允许出现 空格,可以使用连字符‘-’,但不能使用下划线‘_’。字段名后必须紧接着':',不能有空格而‘:’后字段值前可以有多个空格。如,Connection:keep-alive(正确)而Connection :keep-alive是错误的

    • 字段可以任意排列

    • 字段不能重复,除非字段本身主义允许,如Set-Cookie

  2. 常用头字段

    • 请求字段:如Host,Referer

    • 响应字段:如Server,Date

    • 通用字段:如Content-type,Connection

HTTP状态码

HTTP状态码
1XX:消息响应,服务器收到请求,需要请求者继续执行操作
2xx:成功响应,操作被成功接收并处理
3xx:重定向响应,需要进一步的操作以完成请求
4xx:客户端错误,请求包含语法错误或无法完成请求
5xx:服务器端错误,服务器在处理请求的过程中发生了错误
常见状态码
200:请求成功,用于get和post请求
301:永久移动,资源被永久转移到其它URL,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
404:请求资源不存在,找不到
500:内部服务器错误,无法完成请求
其他状态码
100:继续,客户端应继续其请求
101:切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议
201:已创建。成功请求并创建了新资源
202:已接受。已接受请求,但未处理完成
203:非授权信息。请求成功,但返回的meta信息不在原始的服务器,而是一个副本
204:无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205:重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206:部分内容。服务器成功处理了部分GET请求
300:多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
302:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303:查看其它地址。与301类似。使用GET和POST请求查看
304:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305:使用代理。所请求的资源必须通过代理访问
306:已经被废弃的HTTP状态码
307:临时重定向。与302类似。使用GET请求重定向
400:客户端请求的语法错误,服务器无法理解
401:请求要求用户的身份认证(未授权)
402:保留,将来使用
403:服务器理解请求客户端的请求,但是拒绝执行此请求
405:客户端请求中的方法被禁止
406:服务器无法根据客户端请求的内容特性完成请求
407:请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408:服务器等待客户端发送的请求时间过长,超时
409:服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410 :客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411:服务器无法处理客户端发送的不带Content-Length的请求信息
412:客户端请求信息的先决条件错误
413:由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414:请求的URI过长(URI通常为网址),服务器无法处理
415:服务器无法处理请求附带的媒体格式
416:客户端请求的范围无效
417:服务器无法满足Expect的请求头信息
501:服务器不支持请求的功能,无法完成请求
502:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503:由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504:充当网关或代理的服务器,未及时从远端服务器获取请求
505:服务器不支持请求的HTTP协议的版本,无法完成处理

http请求的过程

  1. 浏览器解析URL中的域名

  2. 根据域名获取对应的ip地址,首先从浏览器缓存中查看,如果没有则从本机域名解析文件host(/etc/hosts)中查看,还没有则从LDNS(local dns server)、Rootserver域名服务器、国际顶级域名服务商的DNS的层层解析

  3. 拿到IP地址后,浏览器可以发起与服务器的三次握手

  4. 握手建立后,开始组装http请求报文,发送报文

  5. 服务器收到请求报文之后开始解析请求报文,生成响应数据,发送响应数据

  6. 浏览器收到响应之后,开始渲染页面

HTTP的8种请求方法

? ? ? ? 1.GET

????????请求指定的页面信息,并返回实体主体,其请求参数放于url后面

特点:

  • GET请求保留在浏览器历史记录中

  • GET请求可被收藏为书签

  • GET请求不应在处理敏感数据时使用(因为所发送的数据是URL的一部分是可见的)

  • GET请求有长度限制

  • GET请求只应当用于取回数据

  • GET请求可被缓存

  • GET请求只允许ASCII字符

? ? ? ? 2.POST

????????向指定资源提交数据进行处理请求(如提交表单、上传文件)。数据被包含在请求体中,会导致新资源的建立或已有资源的修改

特点:

  • POST请求不会被缓存

  • POST请求不会保留在浏览器历史记录中

  • POST不能被收藏为书签

  • POST请求对数据长度没要求

? ? ? ? 3.HEAD

????????类似于GET请求,没有响应体,仅有传输状态与标题部分,用于获取报头

? ? ? ? 4.OPTIONS

????????允许客户端查看服务器的性能

? ? ? ? 5.PUT

????????用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。

????????它会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被改变。如果URI未指示当前资源,则服务器可以使用该URI创建资源。

? ? ? ? 6.DELETE

????????请求服务器删除指定的页面

? ? ? ? 7.TRACE

????????回显服务器收到的请求,主要用于测试或诊断

? ? ? ? 8.CONNECT

????????http/1.1协议中预留给能够将连接改为管道方式的代理服务器

? ? ? ? 9.PATCH

????????对PUT方法的补充,用来对已知资源进行局部更新

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 12:01:41  更:2021-12-09 12:02:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 6:55:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码