HTTP
- HTTP:HyperText Transfer Protocol,超文本传输协议
# HTTP网络协议栈
# HTTP连接
web 浏览器通过 TCP 连接与 web 服务器进行交互。TCP 为 HTTP 提供了一条可靠的比特传输管道,从 TCP 连接一端填入的字节会从另一端以原有的顺序,正确的传达出来。
http连接步骤:
从输入 URL 到页面加载全过程:
1、浏览器从url中解析服务器主机名 2、浏览器将主机名转成服务器ip(DNS解析) 3、浏览器将端口号从url中解析出来 4、浏览器建立一条与web服务器的TCP连接 5、浏览器向服务器发送一条http请求报文 6、服务器向浏览器回送一条http响应报文 7、关闭连接、浏览器显示文档
# HTTP报文
http报文是面向文本的,报文中每一个字段都是一些ASCII码串,各个字段的长度是不确定的。http有两类报文:请求报文 响应报文。
# 报文的组成
- 起始行
- 首部字段
- 主体
点击图片查看完整内容
# 报文语法
请求报文和响应报文的格式相似,只有起始行的语法有所不同。
请求报文格式:
响应报文格式:
# 请求方法
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 请求服务器删除指定的页面 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 |
其他拓展方法 | LOCK、COPY等 |
# 响应状态码
- 100 ~ 199 : 信息提示
- 200 ~ 299 : 安全方法
- 300 ~ 399 : 重定向
- 400 ~ 499 : 客户端错误
- 500 ~ 599 : 服务器错误
详细状态码介绍请看:HTTP状态码
# 常见状态码
- 200:OK,请求成功。一般用于GET与POST请求
- 204: OK, 请求成功但无body返回,常见于option请求
- 301:Moved Permanently,永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
- 302:Found,临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
- 304:Not Modified,未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
- 400:Bad Request,客户端请求的语法错误,服务器无法理解
- 401:Unauthorized,请求要求用户的身份认证
- 403:Forbidden,服务器理解请求客户端的请求,但是拒绝执行此请求
- 404:Not Found,找不到资源
- 405:Method Not Allowed,请求方法不允许
- 500:Internal Server Error,服务器内部错误,无法完成请求
- 502:Bad Gateway,网关/代理错误
- 504:Gateway Time-out,网关/代理超时
# 首部字段
首部和方法配合工作,共同决定了客户端和服务器能做什么事。了解各种常见的首部字段很有必要。