HTTP协议基础

HTTP: HyperText Transfer Protocol(超文本传输协议)

HTTP是应用层协议,基于HTTP协议的如HTTPs协议。特点有明文传输,无状态。

一、HTTP协议的组成

请求:头部和正文。

响应:头部和正文。

二、请求头相关

  1. User-Agent: 客户端信息,浏览器,操作系统。
  2. 协议和版本号。
  3. 请求的地址。
  4. Accept-Encoding: 请求头压缩方式,浏览器主动服务器告诉可以接受这两种压缩方式,我可以解压缩。
  5. Connection: Keep-Alive 长连接,在未过期之内,不用再三次握手连接。
  6. Cookie: 浏览器发送给服务器的内容。
  7. x-request-with: XMLHttpRequest 表示使用Ajax方式发送的请求。
  8. Accept:告诉服务器浏览器可以接受的响应类型。
  9. Referer: url 哪个页面发送的请求。可以知道来访页面,如果直接键入地址访问Referer是空。
  10. Content-length 正文长度(数据不大)。
  11. 方法
    •   GET   向指定资源获取数据,长度限制2000byte,参数以?A=1&b=2的形式传输
    •   POST 向指定资源提交数据,无长度限制,数据在请求正文中传输
    •   PUT  向指定资源更新
    •   DELETE 删除标识的指定资源
    •   HEAD 向服务器发出指定资源的请求,类似GET,但服务器不传回所有资源
    •   TRACE
    •   OPTIONS

  ...

三、响应头相关

  • Server: 服务器信息,服务器名/版本号。
  • Content-Type: 返回数据类型。
  • Transfer-Encoding:chunked 分块传输(数据较大时)。
  • X-UA-Compatible:IE=Edge,chrome=1 支持兼容模式。
  • cache-control:缓存方式。默认是private,即第一次访问全新加载,之后使用缓存;no-cache意为完全不用缓存;max-age可以设置一个时间,时间段内都使用缓存,过期重新加载。还有设置访问次数的,更多取值待百度。
  • Expires:过期时间 过期就重新加载,不过期就用缓存。
  • Last-Modified/If-Modified-Since:记录缓存文件最后修改情况,以判断是否要重新向服务器请求。
  • Etag/If-None-Match: 为了更精确记录缓存文件修改情况,不再以时间为参照,而给文件标识“版本号”。 
  • set-cookie: 为客户端设置cookie。

(2)常见状态码

  • 1XX:指示信息,请求已接收,继续处理
  • 2XX:成功,请求已经成功
  • 3XX:重定向,跳转到其他位置
  • 4XX:客户端错误
  • 5XX:服务器端错误

——

  • 200:ok
  • 206:断点续传或者将一个大文档分解为多个下载段同时下载
  • 301:永久重定向
  • 302:暂时重定向
  • 304:内容未修改。服务器端判断内容没有变化,让浏览器使用本地缓存。
  • 400:客户端请求有语法错误
  • 401:请求未授权
  • 403:服务器接收请求但拒绝服务,没有权限
  • 404:资源没有找到,url错了
  • 500:服务区不可预期错误
  • 503:服务器当前不能处理请求,过段时间可能恢复

参考:

慕课网Scott的Node.js基础

蜗牛学院《HTTP协议详解

HTTP请求中浏览器的缓存机制

原文地址:https://www.cnblogs.com/feitan/p/5265383.html