一、Http协议解析

HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。
HTTP协议目前最新版的版本是1.1,HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。
HTTP遵循请求(Request)/应答(Response)模型,Web浏览器向Web服务器发送请求时,Web服务器处理请求并返回适当的应答,如图所示。

HTTP使用一种基于消息的模型:客户端发送一条请求消息,而后由服务器返回一条响应消息。

二、Http请求

POST /test.php HTTP/1.1                                     //请求行
HOST:www.test.com                                            //请求头
User-Agent:Mozilla/5.0 (windows NT 6.1;rv:15.0)Gecko/20100101 Firefox/15.0

//空白行,代表请求头结束
Username=admin&password=admin                       //请求正文

HTTP请求包括三部分,分别是请求行(请求方法)请求头(消息报头)和 请求正文。
HTTP请求第一行为请求行,由三部分组成,第一部分说明了该请求时POST请求,第二部分是一个斜杠(/login.php),用来说明请求是该域名根目录下的login.php,第三部分说明使用的是HTTP1.1版本。
HTTP请求第二行至空白行为请求头(也被称为消息头)。其中,HOST代表请求主机地址,User-Agent代表浏览器的标识,请求头由客户端自行设定。
HTTP请求第三行为请求正文,请求正文是可选的,它最常出现在POST请求方式中。

请求头:

只出现在HTTP请求中,请求报头允许客户端向服务端传递请求的附加信息和客户端自身信息。

  • Host 请求报头域主要用于指定被请求资源的Internet主机和端口。
  • User-Agent 请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
  • Referer 包含一个URL,代表当前访问URL的上一个URL,也就是说,用户是从什么地方来到本页面。当前请求的原始URL地址。
  • Cookie 是非常重要的请求头,常用来表示请求者的身份等。
  • Accept 这个消息头用于告诉服务器客户端愿意接受那些内容,比如图像类,办公文档格式等等。

三、Http请求方法

GET:GET方法用于获取请求页面的指定信息。如果请求资源为动态脚本(非HTML),那么返回文本是Web容器解析后的HTML源代码。GET请求没有消息主体,因此在消息头后的空白行是没有其他数据。
POST:POST方法也与GET方法相似,但最大的区别在于,GET方法没有请求内容,而POST是有请求内容的。
HEAD:这个请求的功能与GET请求相似,不同之处在于服务器不会再其响应中返回消息主体,因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
PUT:PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据。向服务器上传指定的资源。

四、http响应

HTTP/1.1 200 OK                                                              //响应行
Date: Sun, 15 Nov 2015 11:02:04 GMT                            //响应头
Server: bfe/1.0.8.9
Content-Length: 2605
Content-Type: application/javascript
Cache-Control: max-age=315360000
Expires: Fri, 13 Jun 2025 09:54:00 GMT
Content-Encoding: gzip
Set-Cookie: H_PS_PSSID=2022_1438_1944_1788; path=/; domain=test.com
Connection: keep-alive
                          //空白行,代表响应头结束
<html>
<head><title> Index.html </title></head>   //响应正文消息主题

HTTP响应的第一行为响应行,其中有HTTP版本(HTTP/1.1)、状态码(200)以及消息“OK”。
第二行至末尾的空白行为响应头,由服务器向客户端发送。
消息头之后是响应正文,是服务器向客户端发送的HTML数据。

响应头

响应头是服务器根据请求向客户端发送的HTTP头。

  • Server 服务器使用的Web服务器名称。
  • Location 服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求之后,通常会立刻访问Location头所指向的页面。用于在重定向响应中说明重定向的目标地址。
  • Content-Type 这个消息头用于规定主体的内容类型。例如,HTML文档的内容类型text/html。
  • Content-Encoding 这个消息头为消息主体中的内容指定编码形式,一些应用程序使用它来压缩响应以加快传输速度。
  • Content-Length 消息头规定消息主体的字节长度。实体头用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
  • Connection 允许发送指定连接的选项。

五、http状态码

五种状态码:

  • 1xx:信息提示,表示请求已被成功接收,继续处理。
  • 2xx:请求被成功提交。
  • 3xx:客户端被重定向到其他资源。
  • 4xx:客户端错误状态码,格式错误或者不存在资源。
  • 5xx:描述服务器内部错误。

常见的状态码描述如下:

  • 200:客户端请求成功,是最常见的状态。
  • 302:重定向。
  • 404:请求资源不存在,是最常见的状态。
  • 400:客户端请求有语法错误,不能被服务器所理解。
  • 401:请求未经授权。
  • 403:服务器收到请求,但是拒绝提供服务。
  • 500:服务器内部错误,是最常见的状态。
  • 503:服务器当前不能处理客户端的请求。

Http协议简单介绍相关推荐

  1. 中国移动WMMP物联网协议简单介绍

    这段时间一直在实现中国移动WMMP物联网协议,现在将该协议简单总结一下. 该协议主要是M2M平台通过GPRS网络或者短信远程管理M2M终端,包括分配终端序列号,采集终端配置信息, 配置终端参数, 软件 ...

  2. XMPP协议简单介绍

    2019独角兽企业重金招聘Python工程师标准>>> 由于博客迁移至www.coderyi.com,文章请看http://www.coderyi.com/archives/434 ...

  3. POP3协议简单介绍

    在Internet,POP3(Post Office Protocol 3)协议通常被用来接收电子邮件.这个协议很容易学,因为它只包含12个命令(其中有3个你完全可以忽略它们的存在).这些命令被客户端 ...

  4. SSL和SSH协议简单介绍。

    工作的网络层次 在OSI七层模型中,这两个安全传输协议其实都是建立在应用层上的. (图片来源:Wikipedia) 设计意图及举例 ①.在最初的设计意图中: SSL被设计为加强Web安全传输(HTTP ...

  5. PBAP协议 简单介绍

    以下的内容摘自PBAP规范1.2.3 1,phone book object类型 pb:主电话本.有的电话本数据是存储在手机本身里,还有的存储在SIM卡里. ich:接电话列表. och:打电话列表. ...

  6. 量子BB84,B92协议简单介绍

    最近开设量子课程,闲着没事把学过协议做一个整理,这次准备BB84与B92协议,E91协议也看了,不过还有很多地方没有想明白,等学明白了在写一下E91理解,参考书籍为<量子密码学>,曾贵华著 ...

  7. Zookeeper的Paxos算法,(2P/3P/CAP/BASE)一致性协议简单介绍

    2P/3P提交(为了保证事务的ACID) 2P 就是二段提交(RDBMS经常就这种机制,保证强一致性),3P就是三段提交: 2P提交 -- 1阶段:提交事务请求(投票阶段)               ...

  8. 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍

    **************************************************************************************************** ...

  9. SIP协议及其简单介绍

    SIP协议及其简单介绍 概述 流程 SIP流程 两台设备建立会话 原理 使用场景 概述 SIP(Session Initiation Protocol,会话初始化协议)是一个应用层协议,用于在互联网上 ...

最新文章

  1. json对象转为url参数_Day48_Ajaxamp;Json
  2. 每句话都可以品半辈子!!!
  3. mysql中group concat_mysql中group_concat()函数的使用方法总结
  4. 沉默不是一个好的选择
  5. 常用的 cocos2d-x 游戏开发工具
  6. 小甲鱼python课后题简书_【Python爬虫】-笨办法学 Python 习题01-10
  7. 根据某个特定字符删除一行
  8. 修改yarn的默认安装和缓存位置
  9. 2.微服务设计 --- 演化式架构师
  10. javascript-cropper插件翻译笔记
  11. 墙壁涂色问题--动态规划
  12. php ic卡,IC卡的数据结构认识
  13. 监控摄像头如何进行互联网网页实时直播
  14. 【软件工程】软件维护
  15. 图像处理中“灰度级数”是什么?(灰度值)(位深度)(1bit=1位)
  16. abp 链接本地mysql_ABP Vnext使用mysql数据库
  17. qrcodejs生成二维码图片
  18. Ubuntu 7.04--桌面
  19. 微信开放平台扫码登陆
  20. 唐伯虎点秋香之不共戴天铃声 唐伯虎点秋香之不共戴天手机铃声...

热门文章

  1. LabelImg 批量生成标注图片文件夹序号(起始值+终值)
  2. python multiprocessing 进程间如何共享数据、对象
  3. python 如何将字符串列表合并后转换成字符串? ''.join(List(str))函数
  4. win10下如何查看电脑名称?查看计算机名(win+r -- cmd -- hostname)
  5. springboot开启jms服务监控jvm运行情况
  6. matlab 角域重采样,matlab滤波技术与区域处理---区域滤波
  7. jqgrid的实用方法集合
  8. iphone照片删掉又出现_iPhone 内存不够用,原因在这儿!
  9. 虚拟计算机配置文件,如何更改虚拟内存位(可以解决由于启动计算机时出现了页面文件配置问题……).docx...
  10. git 怎么读_python3中开源代码怎么读?