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浏览器关闭就过期