HTTP协议
规范服务器和浏览器之间数据传输的格式
一、查看浏览器与服务器间的通讯过程
- IE使用httpwatch
- chrome使用审查元素(network)
- 使用telnet(telnet host port)
二、HTTP请求
1.请求行
- GET:提交数据在请求URI,大小不能超过1k,会产生缓存文件
- POST:提交数据在实体内容,大小无限制,不会产生缓存文件
- 请求资源
- HTTP/1.0: 一次只能请求和响应一个资源
- HTTP/1.1: 在一定时间内保持连接
2.请求头
- User-Agent: 用户浏览器的类型和版本
- Referer: 获取发出请求的页面,防盗链(null)
- If-Modified-Since
- 静态页面默认使用缓存,动态页面默认不使用缓存
- 服务器文件最后修改时间lastModified与浏览器文件最后修改时间ifModifiedSince作比较
- 重写getLastModified方法实现动态页面缓存
- 还有其他
- 空行
3.请求体
只当POST请求时有内容,是键值对形式
三、HTTP响应
1.状态行
- 协议名和版本
- 200 OK 请求成功,整个处理过程完成
- 302 Move Temprorily 请求重定向
- 304 Not Modified 使用缓存
- 404 Not Found 请求的资源不存在
- 500 Internal Server Error 服务器代码异常
2.响应头
- Locations
- Content-Encoding
- Content-Type
- 乱码问题:编码和解码的码表不一致,具体见《编码、解码和乱码》
- Response默认使用的ISO8859-1拉丁码表
- setCharacterEncoding(“utf-8”);修改Response编码使用的码表
- setContentType(“text/html;charset=utf-8”)修改Response编码使用的码表并通知浏览器解码使用的码表
- Refresh
- 指定一个秒数定时刷新页面setHeader(“refresh”,”3”)
- 定时跳转setHeader(“refresh”,”3;url=/index.jsp”);
- Content-Disposition
- 中文不能直接用于网络传输,必须先URL编码
- 文件下载时候文件名的URL编码必须使用UTF-8(浏览器厂商制定)
- setHeader(“content-disposition”,”attachment;filename=”+URLEncoder.encode(file.getName(),”utf-8”));
- Cache-Control:no-cache
- Expires:-1
- Pragma:no-cache
- 空行
3.响应体
服务器向浏览器回传的数据,一般是HTML页面。
文章来源: HTTP协议