1, 介绍
HTTP, 超文本传输协议, 是互联网中最为常用的一种网络协议.
2, 组成
HTTP 协议有 HTTP 请求和 HTTP 响应组成.
3,HTTP 请求
编辑一个 form 表单页面, 如下:
- <html>
- <head>
- <meta charset="UTF-8">
- <title>HTTP TEST</title>
- </head>
- <body>
- <form action="demo1.html" method="POST">
- <input type="text" name="username"><br>
- <input type="password" name="password"><br>
- <input type="submit" value="测试 HTTP 请求"><br>
- </form>
- </body>
- </HTML>
点击提交按钮, 抓包如下:
- // 请求行
- POST /zhoubin/document/demo1.HTML HTTP/1.1, // 请求路径
- // 请求头
- Accept:text/HTML,application/xhtml+xml,*/* // 浏览器可支持的文件类型
- Referer:http://localhost:8080/zhoubin/document/demo1.HTML // 刷新
- Accept-Lanuage:zh-CN // 接收的语言类型
- User-Agent:Mozilla/5.0(compatiable:MSIE 9.0 Windows NT 6.1 ...) // 用户当前使用的客户端信息 (浏览器, 操作系统等)
- Content-Type:application/x-xxx-form-urlencoded // 请求的类型
- Accept-Encoding:gzip,deflate // 编码格式
- Host:localhost:8080 // 当前主机名
- Content-Lenght:30 // 请求体的长度
- Connection:Keep-Alive // 保持连接
- Cache-Control:no-Cache
- // 请求体
- username=zhangsan&password=123
请求行介绍:
请求方式: POST,GET, 当为 POST 是时, 请求体中会有请求的参数; 如果为 GET, 那么请求的参数不会在请求体中, 而是会拼接在 url 地址后面.
请求的资源:/zhoubin/document/demo1.HTML
协议版本: HTTP/1.0: 发送请求, 创建一次连接, 获得一个 web 资源, 连接断开.
HTTP/1.1: 发送请求, 创建一次连接, 获得多个 Web 资源, 保持连接.
常见请求头介绍:
Referer: 浏览器通知服务器, 当前请求来自何处. 如果是直接访问, 就不会有这个头. 常用于: 防盗链.
If-Modified-Since: 浏览器通知服务器, 本地缓存的最后变更时间, 与另一个响应头组合控制浏览器页面的缓存.
Cookie: 与会话技术有关, 用于存放浏览器缓存的 Cookie 信息.
User-Agent: 浏览器通知服务器, 客户端浏览器与操作系统相关信息.
Connection: 保持连接状态, Keep-Alive: 连接中, close: 已关闭.
Host: 请求的服务器主机名.
Content-Lenght: 请求体的长度.
Accept: 浏览器可支持的文件类型, text/HTML:HTML 文件, text/CSS:CSS 文件, text/JavaScript:JS 文件, image/*: 所有图片文件.
Accept-Ecoding: 浏览器通知服务器, 浏览器支持的数据压缩格式, 如 gzip 压缩.
Accept-Language: 浏览器通知服务器, 浏览器支持的语言, 各国语言 (国际化 il8n).
4,HTTP 响应
响应内容如下:
- // 响应行
- HTTP/1.1 200 OK
- // 响应头
- Server:Apache-Coyote/1.1
- Accept-Ranges:bytes
- ETag:W/"312-1467289802502"
- Last-Modified:Thu,30 Jun 2016 12:30:02 GMT
- Content-Type:text/HTML
- Content-Language:312
- Date:Thu,30 Jun 2016 12:31:12 GMT
- // 响应体
- <!DOCTYPE HTML>
- <HTML>
- <head>
- <meta charset="UTF-8">
- <title>
- HTTP TEST
- </title>
- </head>
- <body>
- <form action="demo1.html" method="POST">
- <input type="text" name="username">
- <br>
- <input type="password" name="password">
- <br>
- <input type="submit" value="测试 HTTP 请求">
- <br>
- </form>
- </body>
- </HTML>
响应行介绍:
200: 请求成功
302: 请求重定向
304: 请求资源没有改变, 访问本地的缓存
404: 访问的资源不存在
500: 服务器内部错误
响应头介绍:
Location: 指定响应的路径
Content-Type: 响应的正文的类型, 取值: text/HTML;charset=UTF-8
Content-Disposition: 通过浏览器以下载方式解析正文, 取值: attachment,filename=xx.zip
Set-Cookie: 与会话技术相关, 服务器向浏览器写入 Cooike
Content-Encoding: 服务器使用的压缩格式, 取值 gzip
Refresh: 定时刷新, 格式: 秒数; url = 路径, 其中 url 可省略, 默认值为当前页, 取值: 3:url=www.itcast.cn, 意味 3 秒刷新页面到 www.itcast.cn
Server: 指服务器名称, 默认值: Apache-Coyote/1.1, 可以通过 conf/server.xml 配置进行修改
Last-Modified: 服务器通知浏览器, 文件的最后修改时间, 与 If-Modified-Since 一起使用
响应体介绍:
响应体是服务器会写给客户端的正文内容, 浏览器将正文加载到内存, 然后解析渲染显示页面内容.
.
来源: https://www.cnblogs.com/dadian/p/11954830.html