总结HTTP协议详解
Posted AI_huihui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结HTTP协议详解相关的知识,希望对你有一定的参考价值。
概述
什么是协议,协议就像是我们租房或者工作时所签订的合同,就是事先说明的一种规范,约定,标准 。
HTTP协议(HyperText Transfer Protocol):又称超文本传输协议,客户端(浏览器端)与WEB服务器端之间的交互协议。当浏览器和服务器进行数据交换时,html文件、图片、CSS、JS等都是基于HTTP协议进行交互传输的。
HTTP协议目前使用的基本都是1.1版本
(版本详情见:http协议各版本差异_gcs的博客-CSDN博客_http协议版本)
特点:通常是基于 B/S 结构软件的; 无连接:浏览器向服务器发送一次请求,服务器响应一次,链接就结束,这样可以节省传输的时间,现今大多数服务器支持 Keep-Alive 功能,使用服务器支持长连接; 无状态:协议对于事务的处理是没有记忆的,服务器不能记住哪个浏览器被访问过,服务器不知道客户端是什么状态,即客户端发送HTTP请求后,服务器根据请求给我们发送数据,发送完毕后并不会纪录信息,但使用 cookie 机制可以保持 session ,解决此问题。
1.请求和响应
HTTP协议主要分为两大部分: 请求: 访问服务器的任何一个文件都是一次请求 响应: 服务器处理请求,将结果返回给浏览器。
HTTP请求消息:由于 HTTP 协议属于客户端浏览器和服务器之间的通信协议。因此,客户端发起的请求叫做HTTP 请求,客户端发送到服务器的消息,叫做 HTTP请求消息,又叫HTTP请求报文
请求消息由请求行、请求头部、空行和请求体四部分组成。
- 请求行:
由请求方式、URL和HTTP协议版本三部分组成,它们之间用空格隔开。 - 请求头部(header):
由多行 键/值对 组成,每行的键和值之间用英文的冒号分隔,用来描述客户端的基本信息,从而把客户端相关的信息告知服务器。 - 空行:
最后一个请求头字段的后面是一个空行,通知服务器请求头部至此结束。(请求消息中的空行,用来分隔请求头部与请求体)。 - 请求体:
请求体中存放的,是要通过 POST 方式提交到服务器的数据。(注意:只有POST才有请求体,GET没有)
HTTP响应消息:响应消息就是服务器响应给客户端的消息内容,也叫作响应报文。
由状态行、响应头部、空行和响应体四部分组成。
- 状态行
- 响应头部:用来描述服务器的基本信息,由多行 键/值对 组成,每行的键和值之间用英文的冒号分隔。
- 空行:响应消息中的空行,用来分隔响应头部与响应体。
- 响应体:响应体中存放的,是服务器响应给客户端的资源内容。
2.HTTP请求方法
属于 HTTP 协议中的一部分,请求方法的作用是:用来表明要对服务器上的资源执行的操作
3.HTTP响应状态码
用来标识响应的状态。
响应状态码会随着响应消息一起被发送给客户端浏览器,浏览器根据服务器返回的响应状态码,就能知道这次HTTP请求结果是否成功。
状态代码由三个十进制数字组成,第一个十进制数字定义了响应的状态码的类别,后两个数字用来对状态码进行细分。,共分五种类别:
1xx:指示信息–表示请求已接收,继续处理(实际开发很少遇到)
2xx:成功–表示请求已被成功接收、理解、接受并进行处理
- 200 OK 请求成功。一般用于 GET 与 POST 请求
- 201 Created 已创建。成功请求并创建了新的资源,通常用于 POST 或 PUT 请求
3xx:表示服务器要求客户端重定向–要完成请求必须进行更进一步的操作
- 301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
- 302 Found 临时移动。与301类似。但资源只是临时被移动。客户端继续使用原有URI
- 304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源(响应消息中不包含响应体)。客户端通常会缓存访问过的资源
4xx:表示客户端请求有非法内容,从而导致请求失败
- 400 Bad Request 1.语义有误,当前请求无法被服务器理解,除非进行修改,否则客户端不应该重复提交该请求 2.请求参数有误
- 401 Unauthorized 当前请求需要用户验证
- 403 Forbidden 服务器已经理解请求,但时拒绝执行它
- 404 Not Found 服务器无法根据客户端的请求找到资源或者网页
- 408 Request Timeout 请求超时。服务器等待客户端发送的请求时间过长,超时
5xx:服务器端错误–服务器未能实现合法的请求
- 500 Internal Server Error 服务器内部错误,无法完成请求
- 501 Not Implemented 服务器不支持该请求方法,无法完成请求。只有GET和HEAD请求方法是要求每个服务器必须支持的,其他请求方法在不支持的服务器上会返回501
- 503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求
以上是关于总结HTTP协议详解的主要内容,如果未能解决你的问题,请参考以下文章
HTTP协议Keep-Alive模式详解和HTTP头字段总结