http协议请求和响应头

180 阅读2分钟

响应头

如何保持http长连接

  • Connection: keep-alive; 设置tcp长连接

在http1.1中使用pipeline技术,一个tcp连接的管道中发送多个http请求时。基于http的“对头阻塞”,返回的响应式串行的。

  • Content-length;表明当前请求返回数据包的长度
  • 那么每个请求返回响应头可以设置Content-length,区分每个响应的长度来识别每个请求对应返回的数据。

注意:若未使用pipeline或tcp长连接则可以不设置Content-length,因为当前一个tcp连接只给当前这一个请求提供服务,就没必要用Content-length来区分不同响应的数据。

  • Transfer-Encodeing;表明返回的是数量未定的数据块
  • 当服务端以stream的方式返回时需要设置Transfer-Encodeing:chunked;这样每个非空的数据块之前会有一个16进制的值,若遇到大小为0的数据块则表示本次的响应发送完了。

请求头

  • Content-Type;请求提交的方式
  • application/x-www-form-urlencoded,以post方式提交表单,格式为key1=value1&key2=value2
  • multipart/form-data,以文件上传的方式提交表单
  • application/json, 以json的方式提交数据
  • text/xml, 以text/xml格式提交数据
  • accept;接受的数据格式

  • Content-range

缓存相关的请求和响应头

  • 协商缓存

Etag / If-None-Match;采用hash算法根据资源内容生成Etag Last-Modified/I-fModified-since;资源被修改的时间,但无法区别资源1秒内修改的变化

  • 强缓存
  • Cache-Control
  • no-cache;在浏览器使用缓存前,会往返对比 ETag,如果 ETag 没变,返回 304,则使用缓存
  • no-store;彻底禁用缓冲
  • max-age:缓存时长
  • Expires
  • cdn缓存

x-hit