什么是http协议
在计算机中两点用来传输超文本数据(图片,文字,音视频等)的协议
常见状态码
- 1xx 提示信息,表示需要后续操作
- 2xx 成功,报文已被收到并处理(200,204)
- 3xx 重定向报告,资源位置已发生变动,需要客户端重新发送请求
- 4xx 客户端错误
- 5xx 服务器错误
常见字段
- Host字段(Host: www.A.com)
- Content-Length 表示服务器返回的数据长度,与http协议中的回车+换行解决使用TCP协议的粘包问题
- Connection (Connection: Keep-Alive)客户端要求保持长连接,以便其它请求复用该连接(此处的连接指本次通信所建立的TCP连接)与TCP的Keep-Alive有区别
- Content-Type/Accept 回应与接受的数据格式
- Content-Encoding/Accept-Encoding 回应与接受的数据压缩方法
GET与POST区别
- GET语义从服务器获取指定资源,请求参数一般写在URL中,URL只能支持ASCLL所以GET只允许ASCLL字符,浏览器对URL长度有限制所以GET请求会因为这个原因无法请求过长数据,例子如下:
GET /index.html HTTP/1.1 Host: www.baidu.com
- POST则是根据报文body对指定的资源做出处理,请求携带的数据一般写在body当中
安全指请求方法不会破坏服务器资源
幂等指多次执行相同操作结果都相同
GET方法是安全且幂等的,因为都是只读操作,所以对GET请求数据可以做缓存
POST方法是新增或提交数据,可能会修改服务器资源,所以不是安全的且多次提交可能创建多个资源,也不是幂等的
HTTP缓存技术
强制缓存
浏览器判断缓存没有过期,直接使用浏览器本地缓存,由浏览器决定
协商缓存
服务端告知客户端是否可以使用缓存的方式,相关响应码304
HTTP特性
优点
- 简单,格式简单,易于理解
- 灵活易扩展,各类请求方法等没有固定死,允许自定义和扩充
- 应用广泛,跨平台
缺点
- 无状态,减轻了服务器负担但是完成关联性操作会非常麻烦
一般会用Cookie技术解决这个问题
2.明文传输,不安全
HTTP与HTTPS
HTTPS在HTTP层与TCP层加入SSL/TLS协议,使得
- 信息加密,交互信息无法窃取(混合加密)
- 校验机制,无法篡改通信内容(摘要算法+数字签名)
- 身份证书(公钥证书)
- 混合加密
在建立通信前用非对称加密算法交换对称加密算法的密钥,之后的通信都用对称加密算法 - 摘要算法+数字签名
非对称加密中有两种流程,公钥加密私钥解密,私钥加密公钥解密,前者用于加密通信内容,后者用于数字签名
私钥对内容的哈希值进行加密,公钥对哈希值进行解密,如果解密后的哈希值与内容的哈希值一致则说明内容没有被篡改 - 数字证书
数字证书是由CA机构颁发的,用于证明服务器身份的,包含了服务器的公钥,服务器的信息,CA的公钥被浏览器内置,保证公钥不是被伪造的
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2128099421@qq.com