一.HTTP协议简介
超文本传输协议(HyperText Transfer Protocol)基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
1.协议基础
协议规则:更加关注传输内容本身
传输明文内容,安全性比较差
应用层协议:标准化1.1
无状态协议:
2.http包含
http包含就是请求报文和响应报文
协议头,协议正文
例如打电话,拨号这一个请求,对应相应就会有不同的状态
二.HTTP状态码
HTTP Status Code:是用以表示网页服务器HTTP响应状态的3位数字代码。
1.状态码分类:
1.消息
信息,服务器收到请求,需要请求者继续执行操作
2.成功
成功,操作被成功接收并处理
3.重定向
需要进一步的操作以完成请求
4.客户端错误
请求包含语法错误或无法完成请求
5.服务器错误
服务器在处理请求的过程中发生了错误
一般1,2,3开头的都是正常,请求是存在的。4是浏览器客户端问题,5是服务器问题
2.常见状态码:
- 200:请求成功
- 301:重定向:永久跳转,完成请求还需要进一步操作
- 302:重定向:临时跳转,完成请求还需要进一步操作
- 302:没有修改过,请求的内容没有修改过
- 403:客户端错误:没有权限,拒接访问
- 404:客户端错误:所访问的页面不存在,错误页面
- 500:服务器内部错误:服务器未能实现合法的请求
三.HTTP协议的请求+响应
1.常用请求get&&post
- get请求获取由Request-URL所标识的资源:get通过URL传递参数
- post请求在Request-URL所标识的资源后附加新的数据:post通过请求体传递参数
Get请求
对于一个请求头
- get方法 :访问的不是主机的根目录,是主机的passport子目录|| 使用的是HTTP1.1版本,解析
- Accept:告诉服务器我这里可以处理哪种页面,如图就是json,javascript,*/*表示所有的资源都可以处理
- Accept-Languange:浏览器的语言
- User-Agent:客户端信息,版本,操作系统,兼容版本号在括号内
- Accept-Encoding:编码压缩格式,标准gzip压缩格式,
- host字段:表示主机
- cookie
Post请求
对于一个请求头
- post方式||| 主机名 ||| http1.1
- Referer:通过哪里来访问这个页面
四.HTTP的Cookie和Session
Session
SessionID是32位16进制的字母,表示的种类很多,服务器用来唯一标识浏览器或者客户端的,用另一个浏览器登录同一个服务器SessionID也不一样,登录状态改变,PHP中的Session文件会改变.
- Seeion保存在服务器端 ,服务器自己运行和维护这样的文件
- 但是,如果用户量很大的时候,服务器的维护消耗寻找很大,性能受到影响
- 从查找速度来考虑的话,把Session保存在内存中而不是硬盘中
- 从数据库方式的话,保存状态为数据而不是在文件中
Cookie
cookie保存在客户端,可以方便从客户端保存文件信息
- 1)浏览器从Cookie获取账号信息和状态,
- 2)浏览器把账号和信息发送给服务端
- 3)服务端验证账号的状态和信息
- 4)服务器响应客户端
从安全性看,cookie缓存可能会有账户密码泄露,cookie的过期时间,所以一般退出的时候最好清空Cookie和Session
不过之后对于用户校验都有token之类的校验
五.Http和Https的区别
SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接字层超文本传输协议)。
简单来说,HTTPS协议="SSL+HTTP协议"构建的可进行加密传输、身份认证的网络协议,是HTTP的安全版
相同之处
协议基础是相同的,都是从浏览器或者客户端,发送一个请求到服务器对应的的端口
服务器收到请求就会返回一个状态码和对应的消息(请求消息,错误信息)
系统使用同一资源定位符,这里面只有协议的头说明是不一样的。
不同之处
不同之处 | http协议 | https协议 |
---|---|---|
工作层 | 应用层 | 传输层 |
端口 | 80 | 443 |
传输方式 | 明文传输 | SSL加密传输(SSL+HTTP) |
工作耗时 | TCP握手 | TCP握手+SSL握手 |