Http协议详解

东方客主 等级 618 0 0

超文本传输协议

  • 请求/响应报文
  • 连接建立的流程
  • HTTP的特点

请求/响应报文

  • 请求报文
![](https://img-hello-world.oss-cn-beijing.aliyuncs.com/146ca2b87d6a82b2c5c101154d915824.png)

请求报文结构



请求行、首部字段区、实体主体
  • 响应报文
![](https://img-hello-world.oss-cn-beijing.aliyuncs.com/d608b64cddbb018bb631fcb19ddb98ea.png)

响应报文结构



响应行、首部字段区、实体主体

http请求方式
GET POST HEAD PUT DELETE OPTIONS
GET和POST区别
答:基础:GET请求参数以?分割拼接到URL后面,POST参数在BODY里面;GET参数限制在2048个字符,POST一般没有该限制;POST相对GET较安全
进阶:从语义角度回答
GET是用来获取资源,需要遵从安全的、幂等的、可缓存的原则
POST是用来处理资源,非安全的、非幂等的、不可缓存的
安全性:不应该引起Server段的任何变化。 GET HEAD OPTIONS 都遵从
幂等性:同一个请求方法执行一次和执行多次效果都相同。PUT DELETE
可缓存性:请求是否可以被缓存。 GET HEAD

状态码
1XX:
2XX:
3XX:
4XX:
5XX:
具体见文末

HTTP连接建立流程

Http协议详解

连接建立流程

HTTP特点

无连接
http的持久连接
无状态
cookie/session

http持久连接

Http协议详解

持久连接涉及到的请求头部字段
Connection:keep-alive
time:20
max: 10

那么如何判断一个请求是否结束
Content-length:1024
Chunked:最后会有一个空的Chunked

Charles抓包原理
中间人攻击

状态码 状态码英文名称 中文描述
100 Continue 继续。客户端应继续其请求
101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200 OK 请求成功。一般用于GET与POST请求
201 Created 已创建。成功请求并创建了新的资源
202 Accepted 已接受。已经接受请求,但未处理完成
203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206 Partial Content 部分内容。服务器成功处理了部分GET请求
300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303 See Other 查看其它地址。与301类似。使用GET和POST请求查看
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305 Use Proxy 使用代理。所请求的资源必须通过代理访问
306 Unused 已经被废弃的HTTP状态码
307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
402 Payment Required 保留,将来使用
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
409 Conflict 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed 客户端请求信息的先决条件错误
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable 客户端请求的范围无效
417 Expectation Failed 服务器无法满足Expect的请求头信息
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理
收藏
评论区

相关推荐

HTTP 的本质?HTTP 和 RPC 的区别?
身为 Java Web 开发我发现很多人一些 Web 基础问题都答不上来。 上周我面试了一个三年经验的小伙子,一开始我问他 HTTP/1、HTTP/2相关的他到是能答点东西出来。 后来我问他:你怎么理解 HTTP 的,HTTP 的作用是什么? 他支支吾吾答不出来。 经过了一番引导交谈,他回答是用来客户端和服务端之间传输的。 我接着问那你知道什么是
Http协议详解
超文本传输协议 请求/响应报文 连接建立的流程 HTTP的特点 请求/响应报文 请求报文 (https://imghelloworld.osscnbeijing.aliyuncs.com/146ca2b87d6a82b2c5c101154d9
HTTP 1.1与HTTP 1.0的区别
**HTTP 1.1****与HTTP 1.0的比较** 一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有
HTTP 错误 500.19
错误重现 ---- 往常习惯在web.config文件里添加配置节点默认文档,内容如下: <!-- web.config --> <configuration>   <system.webServer>     <defaultDocument>       <files>              <ad
HTTP协议
URI与URL有什么不同呢? URI:Universal Resource Identifier统一资源标志符 URL:Universal Resource Locator统一资源定位器 URI是用来唯一地确定资源的表示方式,只要资源能唯一确定,则可以算作一种URI URL是用定位的方式来确定资源的表示方式,比如常见的http://www.googl
HTTP协议图
#### 1.首部字段概述 先来回顾一下首部字段在报文的位置,HTTP 报文包含报文首部和报文主体,报文首部包含请求行(或状态行)和首部字段。 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富。首部字段同时存在于请求和响应报文内,并涵盖 HTTP 报文相关的内容信息。使用首部字段是为了给客服端和服务器端提供报文主体大小、所使用的语言、认证信息
HTTP报文
一、HTTP概述 -------- ### (一)什么是HTTP协议?   当在web页面输入url后,浏览器会向web服务器请求资源以显示web页面,而它们之间使用的就是HTTP协议(HyperText Transfer Protocol,超文本传输协议),浏览器就是基于HTTP协议进行文档传输的。 ### (二)HTTP协议的特点 #### 1、
HTTP教程2
客户端和服务器端一旦握手协商成功接建立连接,端点之间可以基于HTTP/2协议传递交换帧数据了。 ### 一。帧通用格式 下图为HTTP/2帧通用格式:帧头+负载的比特位通用结构: +-----------------------------------------------+ | Length (24)
HTTP状态码
消息(1字头) ------- 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。 ### 100 Continue 客户端应当继续发送请求。这个临时响应是
HTTP第一篇【简单了解HTTP、与HTTP相关的协议】
为什么要学HTTP? ========== 我们绝大多数的Web应用都是基于HTTP来进行开发的。我们对Web的操作都是通过HTTP协议来进行传输数据的。 HTTP的诞生主要是为了能够**让文档之间相互关联,形成超文本可以互相传阅** 可以说,Http就是Web通信的基础,这是我们必学的。 Http基础概念 ======== 我们学计算机网络的时候
Android的HTTP Client
大多数联网类Android apps将使用HTTP来发送和接收数据。Android包含两种HTTP客户端:HttpURLConnection和Apache HTTP Client。它们两者都支持HTTPS,streaming上传和下载,可配置的超时,IPv6和连接池。 ### Apache HTTP Client [DefaultHttpClient](
Angular 设置http
  .config(     ['$stateProvider', '$urlRouterProvider', 'AuthProvider', '$httpProvider','TokenGenerator'       function ($stateProvider, $urlRouterProvider, AuthProvide
HTTP Error 500.0
 先上报错图 ![](https://oscimg.oschina.net/oscnet/c2fc5c735b6eb5fe3ba9125889c5106798b.png) 环境 Window Server 2008 r2 netcore 2.2 排错历程 看到这个错 我第一个想到netcore 安装问题 先检查了下环境 ![](https://
HTTP Methods
简介 --   HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作, 虽然他们也可以是名词,但这些请求方法有时被称为HTTP动词。每一个请求方法都实现了不同的语义,但一些共同的特征由一组共享。 方法 说明 GET GET方法请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据。 HEAD
HTTP中cache
网页的缓存是由http消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: **(1) 打开新窗口** 值为private、no-cache、must-revalidate,那么