http是一种基于C/S架构的通讯协议,可以在web上进行数据交换,能够获取网络资源 如html
http是通信协议,在osi模型中属于会话层,连接属于传输层。
http无连接,无状态,可扩展
s端处理完c端的请求之后,并收到c端的应答之后,断开连接。
使用cookie可创建有状态的会话
http header可以用来扩展http协议
GET POST DELETE PUT OPTIONS HEADE TRACE CONNECT
通用首部字段
Cache-control 控制缓存行为
connnection:keep-alive 长链接
Transfer-coding:传输编码
warning 缓存相关的警告信息
请求首部字段
accept客户端接受的媒体类型
accept-charset表示客户端支持的字符集
Accept-Encoding 表示客户端支持的编码格式/
响应首部字段
content-type
实体首部字段
HTTP内容类型
request header 的 accept 要和 content-type 保持一致,这样请求才能正常接收
application/json --响应数据时objecy
text/html ----响应数据是html字符串页面
图片文件image/png image/gif image/jpeg
上传文件如上传excel application-octet-stream
HTTP状态码
200 OK 请求成功
206 服务端返回了request header 要求的 range 字节范围的内容、
200 (from memory /disk cache) 强制缓存
304 协商缓存
404 找不到此资源
403 拒绝此请求
405 请求中的方法被禁止
500 服务器错误
502 无效响应
HTTP缓存
协商缓存,以图片资源访问的304为例,为什么会出现304
浏览器第一次访问图片资源时,缓存里是没有这个资源数据的,服务器会将这个资源数据和资源标识返回回来,浏览器把此数据和标识存储到本地缓存中(内存和硬盘中)。等到浏览器再次访问此资源时,会把此资源标识发送给服务器,体现在request header里面 if-modify-since if-no-match 服务器对比此资源标识,体现在response header里面 last-modified etag,判断出是之前发过的那个,就只返回头部,不反悔实体部分,浏览器就从缓存里取,这个时候状态吗就是304
强制缓存
浏览器中常见的200(from memroy,disk cache) response header 会有 cache-control:max-age:XXXX expire:过期时间点 告知浏览器多久之后或者哪个时间点过期,浏览器判断没过期,就直接从缓存中取,不再发请求。
COOKIE
Set-Cookie: key=value;httponly secure domain path expire
httponly表示此cookie只能发送给服务端,不能被js api访问
secure表示只能通过https这种加密过的协议请求发送给服务器
domain指定cookie生效的主机
path指定cookie生效的目录 一般是根目录 /
expire过期时间点
max-age多久后过期
只有持久性cookie才有expire max-age 时间一过之后即过期
会话期cookie浏览器关闭就过期