对HTTP协议早有了解,最近在看javaweb,视频中讲到了这部分,就把视频的内容整理归纳下
请求(Request)
一个完整的HTTP请求包括:一个请求行、若干请求头、以及实体内容
请求头字段
- Accept:用于告诉服务器,客户机支持的数据类型
- Accept-Charset:用于告诉服务器,客户机采用的编码
- Accept-Encoding:用于告诉服务器,客户机支持数据压缩格式
- Accept-Language:客户机的语言环境
- Host:客户机通过这个头告诉服务器,想访问的主机名
- If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间
- Refer:客户机通过这个头告诉服务器,它是从哪个资源访问服务器的(防盗链)
- User-Agent:客户机通过这个头告诉服务器,客户机的软件环境
- Cookie:客户机通过这个头向服务器带数据
- Connection:这个请求完了,是保持连接还是关闭
- Range:断点下载
bytes=n1-n2
,传输范围n1到n2字节bytes=n-
,传输web资源中第n个字节以后的所有内容bytes=n
,传输最后n个字节
响应(Response)
一个HTTP响应代表服务器向客户端回送的数据,包括:一个状态行、若干消息头、以及实体内容
响应状态行
详情可参考
响应头字段
- Location:这个头配合302状态码使用,用于告诉客户机找谁(location和302实现请求重定向)
- Server:服务器通过这个头,告诉浏览器服务器的类型
- Content-Encoding:服务器通过这个头,数据的压缩格式
(相关java知识:GZIPOutputStream
,包装流/底层流) - Content-Length:服务器通过这个头,告诉浏览器回送数据的长度
- Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
- Last-Modified:服务器通过这个头,告诉浏览器当前资源的缓存时间
- Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次
- Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开
- Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传送格式
- Etag:缓存相关的头部,用于实时性要求高的系统
- Expires:服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0则不缓存
- Cache-Control和Pragma:no-cache,服务器通过这两个头,也是控制浏览器不要缓存数据
- Connection:断开连接/保持连接
- Date:当前时间
- Accept-Ranges:用来说明web服务器是否支持range。支持返回bytes;不支持返回none
- Content-Range:制定了返回web资源的字节范围,格式:
n1-n2/n_total