笔记:HTTP协议基础
一、HTTP协议特点:
- 简单快速,请求方式有get、post、head 等8种
- 无连接无状态
- 支持模式有 B/S(浏览器) C/S(通过websocket去通信)
URL,统一资源定位符,在网络中用来标识某处的资源
http(协议)://www.baidu.com(域名):8080(端口)/news(虚拟目录)/index.php(文件名部分)?parameter=deal&id=35&do=add(三个参数,?开始,用&连接)#name(锚部分)
二、请求包(request)
1、请求包:request=请求行+请求头+空行+请求数据
2、请求方式:
http1.0: GET POST HEAD
http1.1:GET POST HEAD OPTIONS PUT DELETE TRACK CONNECT
3、请求包中每个请求头中参数的含义
POST /null HTTP/1.1 请求行(请求方式+url+协议及版本)
Host: 192.168.211.3 表示请求的服务器的IP
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 表示用户本地环境
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 浏览器可解析的语言类型
Accept-Encoding: gzip, deflate 浏览器可解析的编码方式
Referer: http://192.168.211.3/a70m 表示请求页面是从哪来
Cookie: program=test; vlan=0; ip=10.3.139.133 表示服务器和浏览器之间的会话状态,该会话状态可以表示用户是否登录过,一般都是服务器给的配置,具有时效性。只要失效,就需要用户重新登录,只有登录成功之后,浏览器会保存cookie,每次去服务器请求都会带上cookie,并且该cookie是需要在服务器中去验证。
X-forwarded-for:127.0.0.1 表示用户的真实的IP
DNT: 1
Connection: close 连接状态
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded 内容类型,表示该请求数据的类型
Content-Length: 139 请求包长度
空行
DDDDD=&upass=&R1=0&R2=0&R3=0&R6=0¶=00&0MKKey=123456&buttonClicked=4&redirect_url=&err_flag=&username=123&password=456&user=&cmd=&Login= 请求数据(GET没有,POST有)
4、相同点:
- 都可以创建数组,array,其包含了键值对(key=value),其中的键是表单控件的名称,值是用户输入的数据;
- GET和POST视为$_GET和$_POST,是超全局变量。
5、不同点:
- GET型方式将用户发送的数据拼接到URL中,发送的数据量较小,不安全;
- POST型方式参数放在请求包中的请求数据中,必须使用工具查看,发送的数据量较大,安全性较高。
三、响应包(response)
1、用户发送的请求包达到服务器之后,要处理该请求,把处理之后的结果发送给用户的浏览器,我们将该结果称为响应头。
2、Response=状态行+相应报头+空行+响应正文
3、如何用BP拦截响应包
先去设置浏览器中代理,在去设置BP中的代理监听器,同时要注意勾选“Intercept responsers based on the following:”,在拦截到数据包后,点击“Forward”,就能看到相应包。
4、状态码,是由三位数字组成,第一位数字表示了相应的类型,共有五种类型:
1XX:表示服务器已经接收到请求,并且需要继续处理数据
3XX:表示服务器已经成功接收到请求,并处理了该请求
3XX:表示重定向,URL要跳转到其他页面去
4XX:表示用户请求有问题
5XX:表示服务器内部出错
常见状态码:200 302 304 400 403 404 500
200 OK:请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
302 Found:临时移动,服务器目前从不同的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
304 Not Modified:未修改,所请求的资源未修改,服务器返回此状态码时,不会返回任何资源,客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
400 Bad Request:客户端请求的语法错误,服务器无法理解。
403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
404 Not Found:服务器无法根据客户端的请求找到资源(网页)。通过此码,网站设计人员可设置“您所请求的资源无法找到 ”的个性界面。
500 Internal Server Error:服务器内部错误,无法完成请求。
5、响应头中每个参数的含义
HTTP/1.1 200 OK 状态行(协议以及版本+状态码) Date: Mon, 23 Sep 2019 03:09:02 GMT 服务器响应时间 Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a 服务器环境 Last-Modified: Mon, 23 Sep 2019 01:43:40 GMT ETag: "116-5932e8c9787e8" Accept-Ranges: bytes Content-Length: 278 返回数据包长度 Connection: close 连接状态 Content-Type: text/html 返回响应数据的类型,告诉浏览器该使用哪种方式去解析或者打开该响应数据类型 Location:index.php 表示要跳转的哪的页面 Set-cookie: 表示服务器给浏览器设置的cookie的值 空行 <!DOCTYPE html> 以下是响应正文 <html> <head> <title></title> <meta charset="utf-8"> </head> <body> <form> <label>ç¨æ·å</label> <input type="name" name="name"> <input type="passwd" name="passwd"> <input type="submit" name="submit" value="submit"> </form> </body> </html>