HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是目前互联网行业使用最为广泛的一种网络协议,采用请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。http服务默认端口是80,https默认端口是443。图1为http服务简单的处理图
图1 http服务流程
本篇文章不会针对http协议原理、底层进行大张旗鼓的分析,仅以http开发者的角度进行讲解,目的是为刚开始接触http服务开发或者接触不久的同学提供帮助。在开发互联网应用的过程中对http的跟踪极为重要,通过对http通信的跟踪我们可以知道client传递了哪些数据,什么类型什么格式的数据,以及与http相关的一些参数,响应等等,通过这些数据来诊断通信的健康状况,进行故障排除。http在通信的过程中将传输的数据分为两部分header和body,Header又包括general header、request header、response header、entity header。那么我们通过什么方式来跟踪这些数据呢?很幸运,Chrome、firefox、IE等主流浏览器给开发者提供了这样的工具。下面是作者结合自己的使用经验进行的总结,将以Chrome为例进行讲解,并且主要以network面板为主。
打开Chrome浏览器,点击F12键调出开发者工具,如图2、图3(两个旅行网站)
图2 火车票查询(post请求)
图3 机票查询(get 请求)
点击搜索按钮,在network面板中展示当前操作从请求到响应整个过程的调用链,单击面板左侧任意一个请求连接,右侧将显示该请求client-server通信过程中的所有数据。我们一一开看下。
Headers页签
General
Request URL :Client请求地址
Request Method:请求类型 get、post、put、delete等
Status Code:响应状态码 200、404、503等
Remote Address:域名对应的真实ip:port
Request header
Accept:客户端/发送端能够接收的数据类型 text/html,application/xhtml+xml,application/xml; Accept-Encoding:浏览器可以支持的web服务器返回内容压缩编码类型 gzip, deflate
Accept-Language:浏览器可接收的语言 zh-CN,zh;q=0.8
Cache-Control:
请求和响应遵循的缓存机制,当前请求的Cache-Control不会影响另一个请求的缓存处理。private(默认)、no-cache、must-revalidate、max-age。
这个参数有几种不同的使用场景:
1) 打开一个新的窗口。private、no-cache、must-revalidate会重新请求服务器; max-age在超过时间年龄值时才会重新请求。
2) 地址栏回车。private、must-revalidate只有第一次时会请求服务器; no-cache每次都会请求;max-age在超过时间年龄值时才会重新请求。
3) 后退按钮。只有no-cache每次都重新请求服务器。
4) 刷新。全部重新请求服务器
Connection: 是否保持与服务器的tcp长连接。keep-alive(默认)、close。Keep-alive代表服务会保留当前连接一段时间被其他请求重复使用;close代表请求之后关闭连接。
Content-Length: 请求体的长度
Content-Type: 请求内容的格式/类型 application/x-www-form-urlencoded application/json
Cookie: 客户端缓存的Cookie,在请求发送时会发送到服务端
Host: 请求的服务器域名
Referer: 当前请求的来源
User-Agent: 发出请求的客户端信息 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Form data(post)
这个版块是在Request Method为post请求类型时显示的post表单数据。
例如:
stationQuery.fromStation:北京
stationQuery.toStation:天津
stationQuery.date: 2016-04-23
Query String Parameter(get)
这个版块是在Request Method为get请求类型时向服务端传递的请求参数。
例如:
type:inbound
depCityCode:BJS
depCity:北京
arrCityCode:SYX
arrCity:三亚
depDate:2016-04-30
arrDate:2016-05-03
Response header
Cache-Control:请求和响应遵循的缓存机制
Connection:是否保持与服务器的tcp长连接。keep-alive(默认)、close。Keep-alive代表服务会保留当前连接一段时间被其他请求重复使用;close代表请求之后关闭连接。
Content-Type:响应内容的格式/类型text/html;charset=UTF-8标识返回的内容是文本类型,html格式。
Content-Encoding:web服务器支持的返回内容压缩编码类型 gzip
Content-Language:响应体的语言
Content-Length:响应体的长度
Date: 消息发出时间(GMT) Sat, 23 Apr 2016 07:47:54 GMT GMT+8=北京时间
Expires: 响应过期时间
Transfer-Encoding:文件传输编码chunked标识传输内容长度不确定,如果以gzip方式输出时,就不必申请一个很大的字节数组了,可以一块一块的输出,更科学,占用资源更少。
Vary: 提示使用缓存响应还是从原始服务器请求,即当缓存中存在一个未过期的响应是否能被后续的请求服用,Accept-Encoding、User-Agent。如果vary的值中返回了User-Agent,那么通过不同的浏览器打开相同的页面都会重新请求服务器;如果Vary中没返回User-Agent,那么客户端缓存把它看成是相同的页面,相同的请求,直接给用户返回缓存的内容;如果返回的值是Accept-Encoding,将请求头信息中的Accept-encoding字段的值(gzip等)作为缓存的key;如果vary的值为*表示缓存不会去做判断;
Preview页签
Preview页签展示请求响应后的预览。
Response页签
Response页签显示响应的具体内容。
Cookie页签
Cookie页签以key-value形式展示客户端所有的Cookie信息。
Timing页签
Timing页签展示的是从请求开始到响应结束整个过程每个阶段经历的时间或者说耗时。
到这里就基本介绍完了Chrome network面板的所有属性(其他浏览器大同小异),掌握了这些知识点在开发调试http应用的过程中会非常的得心应手。
好记性不如烂笔头,下面是我记录的一些常见http服务错误代码
1、400 网页不存在或请求参数语法有误
2、401 账户无访问权限
3、403 网站没有绑定默认首页或者绑定默认首页错误
4、404 访问的资源不存在,服务宕机
5、500 服务器内部错误
6、502 网关错误,服务宕机
7、503 由于临时过载或维护,服务器无法处理请求
http应用问题处理的步骤一般是检查URL是否写错、网络是否正常、DNS是否解析正确、应用自身代码问题。
接下来介绍两款比较不错http服务测试工具,firefox的RESTClient和Chrome的Postman。
先来看下firefox的RESTClient。RESTClient是由中国人开发的基于浏览器的测试工具,是firefox的一个插件,操作简单,用户可以方便的根据需求创建和测试http请求。
先来看下firefox的RESTClient。RESTClient是由中国人开发的基于浏览器的测试工具,是firefox的一个插件,操作简单,用户可以方便的根据需求创建和测试http请求。
一、 安装
打开firefox浏览器,在附件组件中搜索RESTClient,在查询列表中点击安装按钮,安装完需要重启浏览器。图4 显示的RESTClient快捷键位置。
图4 RESTClient快捷键
二、 使用
点击图4 RESTClient快捷键,打开工具面板如图5,
图5 RESTClient面板
在面板中我们可以配置request headers、request method、request url、body等等,最后点击SEND按钮发送请求,响应结果将显示则Response页签,如图6。
图6 请求参数配置
在主面板我们还可以配置Content-type为application/x-www-form-urlencoded;charset=UTF-8,此时Body格式为msg={"name":"张三","timestamp":"2015-08-13"};我们还可以处理get请求、配置请求权限、通过Favorite Requests保持常用请求等等。
另外一个优秀的http服务测试工具是Chrome的Postman。Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,是一个API针对性较强的桌面可视化测试工具。
一、 安装
打开Chrome浏览器,在工具栏的扩展工具中搜索Postman,在查询列表中进行安装操作。安装完后需要在扩展程序中启用Postman,设置后会在桌面显示快捷方式(如图7)
图7 Postman快捷方式
二、使用
双击快捷方式,进入Postman主界面,如图8
图8 Postman主界面
在Postman主界面,左侧是保存的测试用例列表,右侧为请求参数配置、响应结果面板。请求参数配置如图9
图9 请求参数配置
在请求参数配置页签,我们还可以配置get请求、通过Authorization配置权限、配置任意Headers、设置body格式(application/x-www-form-urlencoded、application/json等)、通过save按钮将请求实例保存到左侧测试用例列表。
RESTClient和Postman需要大家去发现他们更好、更多的功能,将它们的优势发挥到最大,使用问题可以和我交流。
通过这篇文章,我们了解到了如何使用浏览器开发者工具跟踪http服务,故障排除,以及介绍了两款优秀的http测试工具,希望能给大家带来帮助(送人玫瑰,手留余香)。
心灵鸡汤
在网上寻找问题答案的最佳方式不是提出问题,而是进行一个错误的回答。
CSDN地址:
http://geek.csdn.net/news/detail/70458
【未经作者不得转载,转载请注明出处http://mycolababy.iteye.com】
- 大小: 5.4 KB
- 大小: 17.2 KB
- 大小: 25.2 KB
- 大小: 2.6 KB
- 大小: 15.4 KB
- 大小: 16.6 KB
- 大小: 29.5 KB
- 大小: 8.8 KB
- 大小: 146.1 KB
- 大小: 99.9 KB
- 大小: 18.3 KB
- 大小: 16.1 KB
- 大小: 303.5 KB
- 大小: 226.4 KB
分享到:
相关推荐
串口调试工具,用于串口跟踪,串口调试工具,用于串口跟踪
以下是关于鬼鬼JS调试工具的内容概要、适用人群、适用场景及目标: 内容概要 鬼鬼JS调试工具主要包含以下几个功能模块: 实时代码监控:实时追踪和显示JavaScript代码的执行状态。 断点设置:允许用户在特定的代码...
发条JS调试工具应能处理异步代码的调试,跟踪回调或Promise链,理解异步操作的执行流程。 7. **源码映射**:在使用压缩或编译后的代码进行调试时,源码映射功能非常重要。它可以将压缩后的代码位置映射回原始源码的...
asp.net 调试跟踪工具Fiddler
【鬼鬼调试JS工具7.5】是一款专为JavaScript开发者设计的强大调试工具,它提供了丰富的功能,帮助开发者在JS代码的编写过程中进行错误检测、性能优化以及代码调试。这款工具以其简洁的用户界面和高效的调试能力深受...
1. **事件跟踪**:调试工具会记录所有由Turbolinks触发的事件,如`turbolinks:before-render`、`turbolinks:load`和`turbolinks:before-cache`等,这有助于理解页面生命周期中的各个阶段。 2. **错误报告**:当...
在使用Dbgview时,开发者通常会结合其他调试工具,如Visual Studio的调试器,进行更深入的分析。Dbgview作为轻量级的辅助工具,能够提供实时的调试信息流,帮助定位和解决问题,尤其是在处理多线程和复杂系统交互时...
为了有效地测试和调试TCP客户端与服务端的通信,开发者通常会使用专门的调试工具。本篇将详细介绍TCP客户端和服务端调试工具及其重要性,以及如何使用“网络调试助手”进行网络通信问题的排查。 TCP客户端是发起...
标题提到的“好用的Tcp Socket调试工具”显然是一款能够帮助开发者解决TCP Socket通信问题的有效辅助软件。描述中提到的“用其它的工具没有调试成功,用此工具调试成功了”,表明该工具在功能和易用性上可能具有一定...
"专用代码调试工具.exe"很可能是这个调试工具的可执行文件,用户可以直接运行来启动调试环境。使用这样的工具,开发者可以在本地环境中模拟服务器行为,无需每次修改代码后都部署到服务器上进行测试,大大提高了开发...
2. Firefox Developer Tools:火狐浏览器的调试工具也具有类似的特性,其Debugger面板允许你暂停脚本执行、查看和修改变量、分析堆栈跟踪等。 3. Microsoft Edge DevTools:微软的浏览器同样提供了一套全面的开发...
【鬼鬼JS调试工具】是一款专门针对JavaScript代码进行调试的专业工具,它为开发者提供了一整套强大而细致的调试环境,使得在Web开发过程中能够高效地定位和修复JS代码问题。这款工具通常被用于测试、优化和理解...
串口跟踪和网络调试工具是IT领域中进行设备通信和网络问题排查的重要辅助软件。在电子工程、自动化、物联网以及嵌入式系统开发等领域,串口(Serial Port)扮演着至关重要的角色,它允许硬件设备之间通过串行数据...
【ASP微型调试工具 小旋风ASP服务器】是一款专为开发者设计的轻量级ASP应用程序测试和调试环境。它能够帮助程序员在本地计算机上快速搭建一个ASP运行平台,以便进行程序开发、测试和调试,而无需依赖IIS(Internet ...
正则表达式调试工具是开发人员用来测试和优化这些模式的重要辅助工具。本文将详细介绍"正则表达式调试工具V3.0 绿色免费版"的特点及其在软件开发中的应用。 该调试工具界面简洁,旨在为开发者提供一个友好的环境来...
ASP调试工具有多种,但被称为“asp最好的调试工具”的可能是指那些功能强大、使用方便、能提供详尽错误信息的工具。这些工具通常包括以下特点: 1. **错误检测与定位**:能够实时检测代码中的语法错误和逻辑错误,...
2. **直观的界面**:调试工具通常具有清晰的界面,使开发者能迅速理解并操作,查看变量值、跟踪代码执行流程等。 3. **断点支持**:在关键代码行设置断点,当程序执行到这些位置时暂停,以便检查当时的变量状态和...
了解并熟练使用TCP和UDP的调试工具对于网络开发、故障排查和性能优化至关重要。 TCP协议强调数据的完整性和顺序性,它通过建立连接、数据校验、重传机制等确保数据无误地到达目的地。在调试TCP连接时,我们通常关注...
在IT领域,Windows调试工具是开发者、系统管理员和故障排除专家不可或缺的利器。这篇文档“Windows调试工具入门”提供了一个全面的学习起点,帮助初学者掌握这些工具的基本使用方法。调试工具能够帮助我们诊断应用...
Mina Server调试工具是针对Apache Mina框架设计的一款专业软件,用于帮助开发者高效地调试Mina服务器应用程序。Apache Mina是一个高度可扩展的网络通信框架,广泛应用于开发高性能、高并发的TCP和UDP服务。这款...