http协议
目录
http协议
1.客户端与服务端建立连接
2.客户端向服务端发送请求
3.服务端向客户端响应数据
4.断开连接
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议它通常运行在TCP之上。
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。
- http的作用
规定WWW服务器与浏览器之间信息传递规范
- 客户端与服务端建立连接
遵守的是一个`TCP/IP`协议,叫做三次握手
- 客户端向服务端发送请求
请求行
我们一般从服务器获取数据,使用get请求
我们一般将数据扔到数据库中,使用post请求
HTTP/1.1 => HTTP协议的版本号
请求头
Accept:客户端希望服务端返回给的数据
Host:主机地址(域名)
Referer:发送的地址
cookie:浏览器存储的一个数据
content-length:请求内容的长度
请求空行
请求头与请求行之间的空行
请求体
get请求的请求参数是在地址(url)中。
post请求的请求参数是在请求体中。
- 服务端响应客户端
响应行
404找不到路径
响应头
Date:服务器的时间
Content-Length:响应的长度
Content-type:服务器返回内容的格式
COOKIE
响应体
服务端返回给客户端的数据
- 客户端与服务端断开连接
http状态码
100~199表示请求继续
200~299表示请求成功
300~399表示重定向
400~499表示客户端错误
500~599表示服务端错误
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
300 | Multiple Choices | |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URl |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URI Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
GET与POST的区别
GET:
请求参数在URL栏里面显示
请求有缓存
请求相对不安全
请求数据在URL栏当中的长度有限制
POST:
请求参数在请求体当中
请求没有缓存
请求相对安全
请求的数据长的度理论上没有限制
COOKIE
1.COOKIE 是在浏览器当中存储一段数据(存储大小4k)
2. 找COOKIE => 右键浏览器检查 => 找到一个application => Cookies (这里面存储的就是COOKIE)
3. 前端与后端都可以操作COOKIE
4. cookie的存储方式是 (key : value) 形式进行存储
5. cookie是根据域名来存储对应的数据,域名不同,cookie不同
6. 分类
- 会话cookie
当我们网页一旦关闭之后,cookie就消失了
- 持久话cookie
当我们网页一旦关闭之后,cookie就存在
storage
分类
localStorage => 持久话storage
只要我的浏览器还在,那么就一直的存储下去,除非手动删除storage
sessionStorage => 会话storage
只要关闭浏览器,那么就会消失
2. 用法
设置storage
localStorage.setItem("key","value")
获取storage
localStorage.getItem("key")
删除storage
localstorage.removeItem("key")
3. 注意:
storage不要存储对象,不然存进去,没办法获取
如果要存储对象,那么我们需要转化JSON字符串