网络协议-HTTP
HTTP-请求方法(8种)
-
GET 、HEAD 、POST 、PUT 、DELETE 、CONNECT 、OPTIONS 、TRACE
-
GET :常用于读取的操作,请求参数直接拼在 URL 的后面(浏览器对 URL 是有长度限制的)
-
POST :常用于添加、修改删除的操作,请求参数可以放到请求体中(没有大小限制)
-
HEAD:请求得到与 GET 请求相同的响应,但没有响应体, 使用场景举例:在下载一个大文件前,先获取其小再决定是否要。以此可节约带宽资源
-
OPTIONS :用于获取目的资源所支持通信选项,比如服务器请求方法,OPTIONS * HTTP/1.1
-
PUT :用于对已存在的资源进行整体覆盖
-
PATCH:用于对资源进行部分修改(不存在,会创建新的)
-
DELETE :用于删除指定的资源
-
TRACE:请求服务器回显其收到的信息,主要用于 HTTP 请求的测试或诊断
-
CONNECT:可以开启一个客户端与所请求资源之间的双向沟通道,它用来创建隧道( tunnel ),可以用来访问采了 SSL (HTTPS) 协议的站点
头部字段
- 请求头字段( Request Header Fields Fields)
- 有关要获取的资源或客户端本身信息消息头
- 响应头字段( Response Header Fields Fields)
- 有关响应的补充信息,比如服务器本身(名称和版等)消息头
- 实体头字段( Entity Header Fields Fields)
- 有关实体主的更多信息,比如长度( ContentContent-Length )或其 MIME 类型
- 通用头字段( General Header Fields Fields)
- 同时适用于请求和响应消息,但与主体无关的头
请求头
请求头字段响应头
响应头字段Cookie与Session
- Cookie与Session机制通常用来记录状态,比如登录状态
- Cookie存放在客户端浏览器
- Session存放在服务端
Cookie与Session的应用 - 摘自MJ网络协议
- 假想一个登录案例,在浏览器中没有登录的状态下,直接访问用户数据接口,此时浏览器会重定向访问到登录页,当用户登录成功之后,再次访问用户数据接口时,会直接返回用户数据
- 在浏览器中通常采用Cookie-Session技术来记录此状态
- 当在浏览器登录之后,服务端会将一一些登录信息保存在session中,此时服务端在进行对请求进行set-cookie,返回值响应头的Set-Cookie字段中,返回给客户端
- 客户端收到这个响应之后,会将Cookie存放在本地磁盘中,在下一个请求时,会在请求头字段的Cookie中,带上本地的Cookie数据
- 服务端从请求头的Cookie字段中取出响应的信息,获取到sesionId,通过sessid找到对应的session,从而取出里面保存的信息,进行一些业务上的校验,再决定是否返回数据给客户端
状态码( Status Code)
- 状态码可以分为 5类
- 信息响应: 100~199
- 成功响应: 200~299
- 重定向: 300~399
- 客户端错误: 400~499
- 服务器错误 :500~599
常见状态码
-
100 Continue
- 请求的初始部分已经被服务器收到,并且没有拒绝。客户端应该继续发送剩余如果完成,就忽略这个响应
- 允许客户端发送带请求体的前,判断服务器是否愿意接收(通过头)
-
在某些情况下,如果服务器不看请求体就拒绝时客户端发送是恰当的
或低效 -
200 OK:请求成功
-
302 Found:请求的资源被暂时移动到了由 Location 头部指定的 URL 上
-
304 Not Modified Modified:说明无需再次传输请求的内容
,也就是可以使用缓存 -
400 Bad Request Request:由于语法无效,服务器理解该请求
-
401 Unauthorized Unauthorized:由于缺乏目标资源要求的身份验证
凭 -
403 Forbidden Forbidden:服务器端有能力处理该请求,但是拒绝授权访问
-
404 Not Found Found:服务器端无法找到所请求的资源
-
405 Method Not Allowed Allowed:服务器禁止了使用当前 HTTP 方法的请求
-
406 Not Acceptable Acceptable:服务器端无法提供与 Accept -Charset 以及 Accept -Language 指定的值相匹配响应
-
408 Request Timeout Timeout:服务器想要将没有在使用的连接关闭,一些服务器会在空闲连接上发送此信息,即便是客户端没有任何请求的情况下
-
500 Internal Server Error Error:所请求
的服务器遇到意外情况并阻止其执行 501 Not Implemented Implemented:请求的方法不被服务器支持,因此无法被处理, 服务器必须支持的方法(即不会返回这个状态码)只有 GET 和 HEAD -
502 Bad Gateway Gateway:作为网关或代理角色的服务器,从上游服务器(如 tomcattomcat)中接收到的
响应是无效 -
503 Service Unavailable Unavailable:服务器尚未处于可以接受请求的状态, 通常造成这种情况的原因是由于服务器停机维护或者已超载