HTTP协议请求报文结构和响应报文结构以及常见状态码
Author:Bruce
HTTP请求报文结构:
第一部分是请求行, 有3个字段:
1 请求方法:(get,post,move,delete等)。
2 URL字段:(访问的URL信息)。
3 HTTP协议版本(主要有http1.0 http1.1 http2.0三种,其中http1.0属于TCP短连接类型协议,http1.1属于TCP长连接类型协议)。
第二部分是请求头部:
由关键字和值配对组成,每行一对,关键字和值用英文冒号:分隔,请求头部的作用是客户端把请求的详细信息告诉服务端,比如
Accept:Image/gif (媒体类型)
Accept-Language:zh-cn(语言类型)
Host:www.taobao.com(服务端主机名)
第三部分是空行:
空行的作用是通过发送回车符和换行符,告诉服务端请求头部结束。
第四部分是请求报文主体:
主体包含了客户端要发送给服务端的信息,所以一般post类型的请求报文会有报文主体,get类型是没有的。
HTTP响应报文结构:
第一部分是起始行,用来说明服务端响应客户端的情况,一般由协议版本号, 数字状态码, 状态情况组成.
在linux系统中可以用curl命令测试,比如访问百度首页:
HTTP/1.1:协议类型和版本号
200:状态码
OK:状态情况(访问成功)
响应报文的第二部分是响应头部 ,第三部分是空行,和请求报文类似.
第四部分是响应报文的主体,包含所有要返还给客户端的数据,可以是文本,也可以是图片,视频等,下面是用linux的curl命令测试结果中响应报文的响应主体部分内容:(百度首页是个用html编写的静态页面)。
不同范围状态码的含义:
100~199:用于指定客户端执行的某些动作
200~299:表示请求成功
300~399:用于已经跳转的页面
400~499:指出客户端的错误
500~599:指出服务端的错误
常见状态码举例:
404-Not found:服务器找不到客户请求的页面,可能是客户端访问了不存在的页面,这里举例如下,打开58同城主页后随便输入一串数字:服务端马上返还还了一个404的状态码:
其余常见的状态码有:
200-OK:访问成功
301-Moved Permanently:永久跳转
403-Fobbidden:禁止访问
500-Internal Server Error:内部服务器错误
502-Bad Geteway:坏的网关
503-Service Unavailable:服务当前不可用,可能是服务器维护导致
504-Gateway timeout:网关超时