HTTP中的方法
- HTTP1.0定义了三种请求⽅法: GET, POST 和 HEAD⽅法
- HTTP1.1新增了五种请求⽅法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT
这些方法的作用:
- GET: 通常⽤于请求服务器发送某些资源
- POST: 发送数据给服务器
- HEAD: 请求资源的头部信息, 并且这些头部与 HTTP GET ⽅法请求时返回的⼀致. 该请求⽅法的⼀个使⽤场景是在 下载⼀个⼤⽂件前先获取其⼤⼩再决定是否要下载, 以此可以节约带宽资源
- OPTIONS: ⽤于获取⽬的资源所⽀持的通信选项
- PUT: ⽤于新增资源或者使⽤请求中的有效负载替换⽬标资源的表现形式
- DELETE: ⽤于删除指定的资源
- PATCH: ⽤于对资源进⾏部分修改 CONNECT: HTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器 TRACE: 回显服务器收到的请求,主要⽤于测试或诊断
GET和POST的区别
- 数据传输⽅式不同:GET请求通过URL传输数据,⽽POST的数据通过请求体传输。
- 安全性不同:POST的数据因为在请求主体内,所以有⼀定的安全性保证,⽽GET的数据在URL中,通过历史记录,缓存很容易查到数据信息。
- 数据类型不同:GET只允许 ASCII 字符,⽽POST⽆限制
- GET⽆害: 刷新、后退等浏览器操作GET请求是⽆害的,POST可能重复提交表单
http的请求报⽂和响应报文
- 请求报文:由四部分组成
- 请求行、请求头、空行、请求体
- 响应报文:
- 响应行、响应头、空行、响应主体
HTTP的状态码
-
2XX 成功
- 200 OK,表示从客户端发来的请求在服务器端被正确处理
- 201 Created 请求已经被实现,⽽且有⼀个新的资源已经依据请求的需要⽽建⽴
- 202 Accepted 请求已接受,但是还没执⾏,不保证完成请求
- 204 No content,表示请求成功,但响应报⽂不含实体的主体部分
- 206 Partial Content,进⾏范围请求
-
3XX 重定向
- 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
- 302 found,临时性重定向,表示资源临时被分配了新的 URL
- 303 see other,表示资源存在着另⼀个 URL,应使⽤ GET ⽅法丁⾹获取资源
- 304 not modified,表示服务器允许访问资源,但因发⽣请求未满⾜条件的情况
- 307 temporary redirect,临时重定向,和302含义相同
-
4XX 客户端错误
- 400 bad request,请求报⽂存在语法错误
- 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
- 403 forbidden,表示对请求资源的访问被服务器拒绝
- 404 not found,表示在服务器上没有找到请求的资源
- 408 Request timeout, 客户端请求超时
- 409 Confict, 请求的资源可能引起冲突
-
5XX 服务器错误
- 500 internal sever error,表示服务器端在执⾏请求时发⽣了错误
- 501 Not Implemented 请求超出服务器能⼒范围,例如服务器不⽀持当前请求所需要的某个功能,或者请求是服务 器不⽀持的某个⽅法
- 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,⽆法处理请求
- 505 http version not supported 服务器不⽀持,或者拒绝⽀持在请求中使⽤的 HTTP 版本
HTTP的keep-alive作用:
在早期的HTTP/1.0中,每次http请求都要创建⼀个连接,⽽创建连接的过程需要消耗资源和时间,为了减少资源消耗, 缩短响应时间,就需要重⽤连接。在后来的HTTP/1.0中以及HTTP/1.1中,引⼊了重⽤连接的机制,就是在http请求头中 加⼊Connection: keep-alive来告诉对⽅这个请求响应完成后不要关闭,下⼀次咱们还⽤这个请求继续交流。协议规定HTTP/1.0如果想要保持⻓连接,需要在请求头中加上Connection: keep-alive。
keep-alive的优点:
- 较少的CPU和内存的使⽤(由于同时打开的连接的减少了)
- 允许请求和应答的HTTP管线化
- 降低拥塞控制 (TCP连接减少了)
- 减少了后续请求的延迟(⽆需再进⾏握⼿)
- 报告错误⽆需关闭TCP连