关于Java web HTTP协议的一些笔记
一.什么是Http协议
Http(HTTP,HyperText Transfer Protocol),超文本传输协议,是互联网上应用最广泛的一种网络协议。
二.Http协议的一些特点
1.B/S网络架构中,Http采用无状态的短链接的通信方式,通常情况下,一次请求就完成了一次数据的交互,通常也对应一次业务逻辑,然后这次通信连接就断开了,采用这种方式是为了能够同时服务更多的用户,因为当前互联网应用每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保持这个连接。
2.基于Tcp协议,Http协议的目的是规定服务端和客户端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于Tcp协议实现的。
三.Http解析
要理解Http,最重要的就是熟悉Http中的Http Header,它控制着用户浏览器的渲染行为和服务器的执行逻辑,下面列举了常见的Http请求头和响应头:
1.常见的Http请求头
请求头 | 说 明 |
Accept-Charset | 指定客户端接收的字符集 |
Accept-Encoding | 指定可接受的内容编码 |
Accept-Language | 指定一种自然语言 |
Host | 指定被请求资源的Internet主机和端口号 |
User-Agent | 客户端将他的操作系统,浏览器,和其他属性都告诉服务器 |
Connection | 当前连接是否保持 |
2.常见的Http响应头
响应头 | 说 明 |
Server | 使用的服务器名称 |
Content-Type | 指明发送给接收者的实体正文的类型 |
Content-Encoding | 与请求报头Accept-Encoding对应,告诉浏览器服务端采用的是什么压缩编码 |
Content-Language | 描述资源所用的自然语言,与Accp-Language对应 |
Content-Length | 指明实体正文的长度,用以字节的方式存储的十进制数字来表示 |
Keep-Alive | 保持连接的时间 |
3.常见的Http状态码:
状态码 | 说 明 |
200 | 客户端请求成功 |
302 | 临时跳转,跳转的地址通过Location指定 |
400 | 客户端请求有语法错误,不能被服务器识别 |
403 | 服务器收到请求,但是拒绝提供服务 |
404 | 请求的资源不存在 |
500 | 服务器发生不可预期的错误 |
四:查看Http信息
有时候我们需要查看一个Http请求的具体数据需要借助一些工具来查询,下面以谷歌浏览器为例
五:浏览器缓存机制
浏览器缓存机制是一个比较复杂又比较重要的机制,在我们浏览一个页面发现有异常的情况下,通常考虑是不是浏览器做了缓存。一般的做法是Ctrl+F5组合键重新请求一次这个页面,在使用Ctrl+F5组合键刷新一个页面时,在Http请求头中会增加两个请求项:Pragma:no-cache 和Cache-Control:no-cache。他告诉服务端我们要获取的是最新的数据不是缓存。