HTTP协议简介--超文本传输协议
- HTTP协议(HyperText Transfer Protocol)是请求/响应协议:客户端发送请求到服务器,服务器响应该请求。
- 当前版本为1.1版本。
- HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
URL--统一资源定位符
- URL=http://主机名:端口/路径?查询
- 如果没有指定端口,那么默认使用80端口
- URL(Uniform Resource Locator)是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
- 基本URL包含:
- 模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。
- 完整的、带有授权部分的普通统一资源标志符语法看上去如下:
2.协议://用户名:密码@子域名.域名.顶级域名:端口号目录/文件名.文件后缀?参数=值#标志。
HTTP工作流程:
http工作流程图
一次HTTP操作称为一个事务,其工作过程可分为四步:
- 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
- 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
- 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
HTTP请求消息
发出的请求信息包括以下几个:
- 请求行,例如GET /images/logo.gif HTTP/1.1,表示从/images目录下请求logo.gif这个文件。
- (请求)头,例如Accept-Language:en
- 空行
- 可选的消息体,请求行和标题必须以<CR><LF>作为结尾(也就是,回车然后换行)。空行内必须只有<CR><LF>而无其它空格。在HTTP/1.1协议中,所有的请求头,除post外,都是可选的。
- HTTP请求消息实例:
常见的HTTP请求头域
请求头域 说明 Accept-Charset 用于指定客户端接受的字符集 Accept-Encoding 用于指定可接受的内容编码,如Accept-Encoding:gzip.deflate Accept-Language 用于指定一种自然语言,如:Accept-Language:zh-cn Host 用于指定被请求资源的Internet主机和端口号,如:Host:www.taobao.com User-Agent 客户端将它的操作系统、浏览器和其他属性告诉服务器 Connection 当前连接是否保持,如Connection:Keep-Alive
HTTP请求方法
GET:请求服务器特定的资源
POST:向指定资源提交数据进行处理请求
- GET特点:
1.安全性不高,客户端浏览器可以明文看到;
2.所有的请求内容放在URL,有字符长度限制小于255,只能是字符类型,不能是图片;
3.浏览器里的浏览历史里面有记录;
4.速度相对较快;
使用场景:一般只是获取访问请求,一般不做提交数据(账号、密码)
- POST特点:
1.安全性相对较高,
2.没有类型要求
3.速度相对较慢
4.浏览器器记录里没有详细数据
使用场景:数据的提交
如果要查看post的数据: 可以用抓包工具。
- GET方法和POST方法区别--安全相关
GET方法提交数据不安全,数据置于请求行,客户端地址栏可见;
GET方法提交的数据大小限制在255个字符之内。
POST方法提交数据安全,数据置于消息主体内,客户端不可见;
POST方法提交的数据大小没有限制。
HTTP响应
- 客户端向服务器发送一个请求,服务器返回响应,HTTP响应也由四个部分组成,分别是:状态行、(包括HTTP协议版本,返回状态码)消息报头(响应头)、空行和响应正文。
- 根据响应的类别,服务器响应可以含响应正文,但并不是所有的响应都有响应正文。
- Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie.
- Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。
常见的HTTP响应头
响应头 说明 Server 使用的服务器说明,如S二女儿:Apache/1.3.6(Unix) Content-Type 用来说明发送给接收者的实体正文的媒体类型,如Content-Type:text/htmel;charset=GBK Content-Encoding 与请求报头Accept-Enconding对应,告诉浏览器服务端采用的是什么压缩编码 Content-Language 描述了资源所使用的自然语言,与Accept-Language对应 Content-Length 指明实体正文的长度,用以字节方式存储的十进制数字表示 Keep-Alive 保持连接的时间,如Keep-Alive;timeout=5,max=120 HTTP响应码
Status-Code Reason-Phrase 1xx 信息响应类,表示接收到请求并且继续处理 2xx 处理成功响应类,表示动作被成功接收、理解和接受 3xx 重定向响应类,为了完成指定的动作,必须接受进一步处理 4xx 客户端错误,客户请求包含语法错误或者是不能正确执行 5xx 服务端错误,服务器不能正确执行一个正确的请求
Cookie、Session和Token的介绍
Cookie
- cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
- cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
工作流程:
1-服务器产生cookie;2-通过http协议传输给浏览器;3-浏览器保存在本地;4-下一次请求会自动获取。
特点:
1-安全不高;2-cookie欺骗(2013/3/15事件);3-可以获取本地的cookie--kv格式在本机操作,XSS脚本用于安全测试。
session---会话id
特点:1-保存在服务器里面;2-会消耗服务器资源;3-安全性相对cookie高。
劣势:服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
Token
在Web领域基于Token的身份验证随处可见。在大多数使用Web API的互联网公司中,tokens 是多用户下处理认证的最佳方式。
以下几点特性会让你在程序中使用基于Token的身份验证
1.无状态、可扩展
2.支持移动设备
3.跨程序调用
4.安全
Fiddler抓包工具简介
- Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。
- 在打开Fiddler它的那一瞬间,它就已经设置好了浏览器的代理了。
- 当你关闭的时候,它又帮你把代理还原了,所以一般不需要手动设置。
JMeter抓包工具简介
1)测试计划中添加非配置元件-http代理服务器
2)http代理服务器设置Jmeter代理端口
3)测试计划中添加线程组,并在http代理服务中选择该线程组作为目标控制器
4)浏览器中设置代理服务器,ip为Jmeter所在主机的ip地址,端口为http代理服务器设置的端口
5) 启动http代理,浏览器中访问相关页面,jmeter会自动录制该操作过程的请求信息。