HTTP 是什么?
HTTP 是超文本传输协议(Hyper text transfer protocol) HTTP 是计算机世界中两个端点用来传输 文字 图片音频视频等超文本信息的规范和约束
HTTP 有三个重要的元素:
1. 超文本:是图片,文字,视频,音频等的组合
2.传输:传输信息
3.协议:约束和规范
HTML 就是常见的超文本
“HTTP 是用于互联网服务器传输超文本到本地浏览器的协议” 这句话对吗?
答案: 是错的, 因为 服务器与服务器之间也可以传输超文本,例如 Spring Cloud 中的很多微服务使用 HTTP请求协议进行通信, 所以是两点之间传输超文本更加正确。
HTTP 的状态码有哪些(重要)SDE 必会
有 五大类型的状态码:1 开头 - 5 开头
1 开头的状态码表示服务器正在处理请求,即处理请求的中间状态,还需要后面的操作
2开头表示请求收到并且被正确处理 如 200,204,206
3开头请求 指重定向, 资源位置发生变化,客户端需要重新发送请求 如301,302, 304
4开头请求 代表客户端发送的请求有错误,服务器无法处理 404.403.400
5开头请求代表服务器在处理请求的时候内部出现错误 如 500,501,502,503
2xx:
200 最常看见的 2系列响应请求,如果是非head请求的话 状态为为200的请求都有body数据
204(No Content) 正常返回响应, 返回的数据内容没有 body
206(Partial Content)正常返回响应,响应的body 里面并不是要返回资源的全部内容,而是一部分, 这个响应码一般用于HTTP 分块下载或者断点续传。
3xx:
301(Moved permanently)永久重定向,表示请求的资源不在了,需要改用新的url访问(一般这种情况response 里面都会有新的url 地址,一般 来说浏览器收到301响应会在浏览器缓存,下次客户端再访问老地址的时候不会访问老地址到服务器然后等待3xx响应而是直接在缓存里面访问上次301响应里面包含着的)
302 (Found) 表示临时重定向,说明请求的资源还在,暂时需要用另外一个url访问,浏览器不会缓存
304(Not modified) 不具有跳转的含义,表示资源未修改,重定向已经缓存在本地的资源,也称为缓存重定向,用于缓存控制(浏览器 为了减少网络拥塞,因为返回的response 里面没有body减少网络的流量)
4xx
400 Bad request 表示 客户端发送的请求有误, 是个笼统的错误状态码
403 Forbidden 表示服务器禁止客户端访问该资源(可能是由于权限不够) 并不是请求出错
404 Not Found 表示客户端请求的资源路径不存在
5xx
500 服务器自身出现错误,和400错误一样 是个笼统的错误,我们并不知道错误是什么
501 Not implement 服务器实现的业务还没有实现好(一般开发中用到的状态码,客户端一般不会不收到这种)
502 Bad Gateway 表示服务器作为网关或者代理时出现错误,指代理在访问后端服务器时发生错误
503 Service unavailable 表示服务器当前很忙, 暂时无法响应服务器,类似网络有问题稍后重试的感觉
HTTP 由那几个部分组成?
1.HTTP 请求行:包含了 HTTP 版本号,状态码,已经状态码的表示短语
2.HTTP 请求头: 下面说到的HTTP的字段
3.HTTP Body: 请求的主要数据
Http 常见字段有哪些:
Host 字段 : Host :www.baidu.com 用来请求指定http访问的域名
Conten-length字段:Server在返回数据时,资源的大小,这个字段用于说明 response body 里的资源大小。
Connection 字段 是常用于客户端要求 server进行持久连接
connection:keep-alive
Http1.1默认 是持久连接了 但是为了兼容老版本 依然要将 connection 设置为持久连接(老版本设置成 keep-alive 才能使持久连接)
非持久连接:每次请求和响应都会断开tcp连接,也就是每次请求都要进行一次tcp 3次握手,已经4此挥手。
持久连接:等到客户端或者服务器主动断开tcp连接。
Content-type: 用于服务器回应时 响应数据的格式
例如 Conten-type:text/html; charset=utf-8
accept字段: 表示客户端 接受哪个数据的格式
例如 Accept: */*
Content-encoding:服务器返回给客户端说明数据的压缩格式
相对应的: accept-encoding: 客户端告诉服务器可以接受的压缩类型