HTTP: HyperText Transfer Protocol(超文本传输协议)
HTTP是应用层协议,基于HTTP协议的如HTTPs协议。特点有明文传输,无状态。
一、HTTP协议的组成
请求:头部和正文。
响应:头部和正文。
二、请求头相关
- User-Agent: 客户端信息,浏览器,操作系统。
- 协议和版本号。
- 请求的地址。
- Accept-Encoding: 请求头压缩方式,浏览器主动服务器告诉可以接受这两种压缩方式,我可以解压缩。
- Connection: Keep-Alive 长连接,在未过期之内,不用再三次握手连接。
- Cookie: 浏览器发送给服务器的内容。
- x-request-with: XMLHttpRequest 表示使用Ajax方式发送的请求。
- Accept:告诉服务器浏览器可以接受的响应类型。
- Referer: url 哪个页面发送的请求。可以知道来访页面,如果直接键入地址访问Referer是空。
- Content-length 正文长度(数据不大)。
- 方法
-
- 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协议详解》