http请求报文
1). 请求行:
method url
GET /product_detail?id=2
POST /login
2). headers: 多个请求头
Host: www.baidu.com
Cookie: BAIDUID=AD3B0FA706E; BIDUPSID=AD3B0FA706;
Content-Type: application/x-www-form-urlencoded 或者 application/json
3). body: 请求体
username=tom&pwd=123
{"username": "tom", "pwd": 123}
关于http中的Content-Type的用法
1:Content-Type是HTTP协议中的一个重要头部手段,用于指示或响应中的媒体类型,它帮助客户端和服务器端理解如何处理传输的数据
你可以指定这几种类型:
- application/json 表示请求体是 JSON 格式。
- `application/x-www-form-urlencoded` 表示表单数据。
- `multipart/form-data` 用于文件上传。
Content-Type 是确保 HTTP 请求和响应中数据被正确解析和处理的关键。根据不同的应用场景,选择合适的媒体类型非常重要。
Host: www.baidu.com 域名
HTTP响应报文
1). 响应状态码: 200/404
2). 多个响应头
Content-Type: text/html;charset=utf-8
Set-Cookie: BD_CK_SAM=1;path=/
3). 响应体
html文本/json文本/js/css/图片...
常见的响应状态码
200 OK 请求成功。一般用于GET与POST请求
201 Created 已创建。成功请求并创建了新的资源
401 Unauthorized 未授权/请求要求用户的身份认证
404 Not Found 服务器无法根据客户端的请求找到资源
500 Internal Server Error 服务器内部错误,无法完成请求
不同的请求类型和作用
1). GET: 从服务器端读取数据
2). POST: 向服务器端添加新数据
3). PUT: 更新服务器端已经数据
4). DELETE: 删除服务器端数据
为啥会发起预请求
当后端用cors处理跨域请求的时候,客户端发起特殊请求,post和put等接口的时候,浏览器会自动发起一个预请求,这个预请求的作用是检查该请求是否允许跨域,如果预请求通过,才可以发起真正的请求。
http1.0 和 http2.0有什么区别呢?为啥要设计http2.0呢?
http1.0的设计上有几个问题,迫使不得设计出http2.0
1:对头阻塞
在http中,同一个TCP的连接请求必须按照顺序处理(后一个请求需要等待前一个完成),导致延迟。
2:重复头部浪费带宽
每个请求都携带大量重复的头部信息(如 User-Agent, cookie)
3:高延迟的多连接开销
浏览器为提升并发性,会打开多个TCP连接(如Chrome对同一个域名开6个连接),但TCP建立连接成本高(三次握手,慢启动)
那么他们之间有什么区别呢?
http1.0 http2.0
连接方式 短连接 长连接
压缩头部 无 采用hpack算法压缩头部
传输方式 文本传输 二进制传输
请求优先级 无优先级控制 可设置请求优先级
http2.0如何解决该问题
1:多路复用(同个tcp连接并行传输多个请求和响应)
2:头部压缩
3:主动服务器推送客户端未来可能需要的资源(如页面中的js和css),减少往返延迟
https和http的区别
HTTPS 通过 TLS 加密传输数据,解决了 HTTP 明文传输的安全问题,核心是混合加密(非对称加密交换密钥 + 对称加密传输数据)和数字证书验证身份,保障了数据的机密性、完整性和服务器真实性。