HTTP协议简介-超文本传输协议

HTTP协议是请求/响应协议:客户端发送请求到服务器,服务器响应该请求。当前版本为1.1版本。

HTTP协议特点

1.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET  POST 。

2. 灵活:HTTP允许传输任意类型的数据对象。传输的类型由content-type加以标记。

3.无连接:无连接的含义就是限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应道后,即断开链接。

4.无状态:HTTP协议是无状态协议。无状态是指协议对与事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则他必须重传,这样可能导致每次链接传送的数据量增大。

HTTP消息

HTTP消息由从客户端到服务器的请求消息和服务器到客户端的响应消息组成。

HTTP请求消息实例

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

实例:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

HTTP请求方法

http常用请求-get请求方法

get请求一般用于获取/查询资源信息,格式为:

GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

HTTP常用请求--post请求方法

post请求一般用于提交表单,格式为:

POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
(----此处空一行----)
name=Professional%20Ajax&publisher=Wiley

URL

URL = http://主机名:端口/l路径?查询

如果没有指定端口,那么默认使用80端口

例子:

http://www.baidu.com/

https://www.baidu.com/baidu?wd=w3school

常见的请求头

请求头,用来说明服务器要使用的附加信息,比较重要的信息有 Cookie、Referer、User-Agent 等,下面将一些常用的头信息说明如下:
    Accept,请求报头域,用于指定客户端可接受哪些类型的信息。
    Accept-Language,指定客户端可接受的语言类型。
    Accept-Encoding,指定客户端可接受的内容编码。
    Host,用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位置。从 HTTP 1.1 版本开始,Request 必须包含此内容。
    Cookie,也常用复数形式 Cookies,是网站为了辨别用户进行 Session 跟踪而储存在用户本地的数据。Cookies 的主要功能就是维持当前访问会话,例如我们输入用户名密码登录了某个网站,登录成功之后服务器会用 Session 保存我们的登录状态信息,后面我们每次刷新或请求该站点的其他页面时会发现都是保持着登录状态的,在这里就是 Cookies 的功劳,Cookies 里有信息标识了我们所对应的服务器的 Session 会话,每次浏览器在请求该站点的页面时都会在请求头中加上 Cookies 并将其发送给服务器,服务器通过 Cookies 识别出是我们自己,并且查出当前状态是登录的状态,所以返回的结果就是登录之后才能看到的网页内容。
    Referer,此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、做防盗链处理等。
    User-Agent,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息可以伪装为浏览器,如果不加很可能会被识别出为爬虫。
    Content-Type,即 Internet Media Type,互联网媒体类型,也叫做 MIME 类型,在 HTTP 协议消息头中,使用它来表示具体请求中的媒体类型信息。例如 text/html 代表 HTML 格式,image/gif 代表 GIF 图片,application/json 代表 Json 类型,更多对应关系可以查看此对照表:http://tool.oschina.net/commons。

请求体

  即请求体,一般承载的内容是 POST 请求中的 Form Data,即表单数据,而对于 GET 请求 Request Body 则为空。

 例如在这里我登录 GitHub 时捕获到的 Request 和 Response 如图

在登录之前我们填写了用户名和密码信息,提交时就这些内容就会以 Form Data 的形式提交给服务器,此时注意 Request Headers 中指定了 Content-Type 为 application/x-www-form-urlencoded,只有设置 Content-Type 为 application/x-www-form-urlencoded 才会以 Form Data 形式提交,另外我们也可以将 Content-Type 设置为 application/json 来提交 Json 数据,或者设置为 multipart/form-data 来上传文件。

下面列出了 Content-Type 和 POST 提交数据方式的关系:

HTTP响应

  客户端向服务器发送一个请求,服务器返回响应,HTTP协议也有四部分组成。分别是:状态行,消息报头(响应头),空行和响应正文。

  根据响应的类别,服务器响应里可以含有响应正文,但并没有所有的响应都有响应正文。

HTTP响应实例

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

常见的HTTP响应头

响应头,其中包含了服务器对请求的应答信息,如 Content-Type、Server、Set-Cookie 等,下面将一些常用的头信息说明如下:

Date,标识 Response 产生的时间。
    Last-Modified,指定资源的最后修改时间。
    Content-Encoding,指定 Response 内容的编码。
    Server,包含了服务器的信息,名称,版本号等。
    Content-Type,文档类型,指定了返回的数据类型是什么,如text/html 则代表返回 HTML 文档,application/x-javascript 则代表返回 JavaScript 文件,image/jpeg 则代表返回了图片。
    Set-Cookie,设置Cookie,Response Headers 中的 Set-Cookie即告诉浏览器需要将此内容放在 Cookies 中,下次请求携带 Cookies 请求。
    Expires,指定 Response 的过期时间,使用它可以控制代理服务器或浏览器将内容更新到缓存中,如果再次访问时,直接从缓存中加载,降低服务器负载,缩短加载时间。

HTTP响应状态码

Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.

HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

1XX  提示信息 - 表示请求已被成功接收,继续处理

2XX  成功 - 表示请求已被成功接收,理解,接受

3XX  重定向 - 要完成请求必须进行更进一步的处理

4XX  客户端错误 -  请求有语法错误或请求无法实现

5XX  服务器端错误 -   服务器未能实现合法的请求

HTTP响应状态码-典型

GET请求与post请求区别

get请求方法:

请求资源

请求数据在URL中,只能提交字符串类型的数据,长度有限制,少于255字符。

get方法速度快

安全性低,数据置于请求行,客户端地址可见。

post请求方法:

提交数据

请求数据在请求主体中传递

安全性高,数据置于消息主题内,客户端不可见。

请求数据类型不受限制,长度不受限制。

速度慢

 http协议是无状态的

http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态。

fiddler抓包工具简介

fiddler是通过改写HTTP代理,让所有客户端和服务器的http和https请求从fiddle那通过,允许你监视,设置断点,甚至修改输入输出数据。

在打开fiddle他的那一瞬间,他就已经设置好了浏览器的代理了。当你关闭的时候它又帮你把代理还原了,一切不需要手动设置。

fiddler抓包原理

fiddler抓包工具

火狐浏览器需要自己设置代理,谷歌浏览器自动设置代理

 

请求过滤

https安装证书

移动端APP抓包

转载于:https://www.cnblogs.com/Chamberlain/p/11064680.html

07- HTTP协议详解及Fiddler抓包相关推荐

  1. php获取微信文章阅读数,详解PHP+fiddler抓包采集微信文章阅读数点赞数的思路

    简介: 分析接口知道要获取文章阅读数和点赞数必须有key和uin这两个关键参数,不同公众号key不一样(据说有万能微信key,不懂怎么搞到),同一个公众号key大概半小时会过期 提交链接获取文章阅读量 ...

  2. ARP协议详解:了解数据包转发与映射机制背后的原理

    数据来源 一.广播与广播域概述 1.广播与广播域         广播:将广播地址做为目标地址的数据帧         广播域:网络中能接收到同一个广播所有节点的集合(广播域越小越好,收到的垃圾广播越 ...

  3. rtmp官方协议详解

    标准规范学习: rtmp消息结构,包括几个部分: 时戳:4  byte,单位毫秒.超过最大值后会翻转. 长度:消息负载的长度. 类型ID:Type Id 一部分ID范围用于rtmp的控制信令.还有一部 ...

  4. fiddler抓包教程------详细

    文章目录 一.简介 二.工作原理 三.Fiddler界面 四.HTTP协议介绍 五.Fiddler抓包解析 六.应用 一.简介     Fiddler 是最强大最好用的Web调试工具之一,它能记录所有 ...

  5. Fiddler抓包6-get请求(url详解)

    前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一. ...

  6. Web协议详解与抓包实战之HTTP1.1 学习笔记【一】

    Web协议详解与抓包实战之HTTP1.1[一] 前言 <Web协议详解与抓包实战>课程学习,陶辉老师主讲 学习内容: HTTP–TLS/SSL–TCP/IP自上而下根据应用学习web协议H ...

  7. Mac下使用Fiddler抓包详解(个人使用过程)

    Mac下使用Fiddler抓包详解(个人使用过程) 前言 1.VMware Fusion for Mac 2.win7镜像 3.windows版fiddler mac使用Windows fiddler ...

  8. Fiddler抓包:详解Fiddler抓包工具软件使用教程

    为什么要先学fiddler?学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 抓firefox上https ...

  9. Fiddler抓包工具入门及常用功能详解

    先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常": 小A说:"这哪是我的问题,你去找后 ...

  10. 网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)

    目录 简介 报文格式 IPv4地址 分类 网络地址转换NAT 子网划分与子网掩码 CIDR 实战 参考 简介 IP(网际互连协议,Internet Protocol)是TCP/IP协议族中最为核心的协 ...

最新文章

  1. android studio 编译报错:download fastutil-7.2.0.jar
  2. Nginx之简介与安装(一)
  3. 让云×××—微软虚拟化远程直播
  4. Linux64位steam,这下没得玩了! Steam无奈抛弃Linux用户
  5. 计算机考研310分什么水平,知乎工学考研310是什么水平
  6. 16-margin的用法
  7. Spring Boot : Whitelabel Error Page解决方案
  8. excel根据条件列转行_Excel vba-根据不同筛选条件筛选后,拆分成新的excel工作簿...
  9. activiti官网实例项目activiti-explorer之获取流程节点
  10. 南华大学c语言实验答案,南华大学C语言习题答案2012年版
  11. 空调在计算机系统属于什么行业,暖通行业隶属国民经济行业分类的哪一类
  12. 利用Fiddler作为网络代理
  13. 使用 COLOR THIEF 获取图片主色,实现图片渐变遮罩,颜色填充等
  14. Phaser帧动画没有效果
  15. linux ffmpeg 合并视频文件,使用ffmpeg合并视频
  16. Python 随机提取Excel中部分数据并输出为新表格
  17. java集合set不能去重_java集合去重和排序
  18. 企业信息管理系统(4)_用户查询
  19. Git冲突“accept theirs”和“accept yours”、merge
  20. 001. 蓝海和红海

热门文章

  1. JSP技术-01-语法及运行原理
  2. Nexmark: 如何设计一个流计算基准测试?
  3. Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行
  4. 基于 MVP + Glide + Retrofit + RxJava2.0 + butterknife 的C9MJ TV App
  5. Android Multimedia框架总结(九)Stagefright框架之数据处理及到OMXCodec过程
  6. php 依赖注入 数据库切换_通俗易懂理解PHP依赖注入容器
  7. 脑电波连接计算机游戏,脑电波也能“玩游戏”?这个“挑战杯”全国一等奖告诉你这都不是事儿...
  8. c# 对象json互相转换_能够将Excel 数据转换成Json格式的实用工具 excel2json
  9. jQuery.ajax(解决跨域问题,jquery解决AJAX跨域问题
  10. java数字后面加f_java 数字后面 f 和 l