http状态码:
2xx:成功
3xx:重定向
301:永久重定向
302:临时重定向
303:存在另外一个URL,需要使用get方法重新请求
304:服务器允许访问,但是请求条件不满足
4xx:客户端问题
400:数据格式存在问题
403:服务器禁止访问,权限不够
404:服务器没有找到资源
5xx:服务器问题
500:服务器端在请求时候出错
503:服务器停机维护,无法使用
01.HTTP报文结构
- 起始行 ——在起始行中每两个部分之间用空格隔开,最后一个部分用一个换行
- 请求报文起始行:
GET /home HTTP/1.1
,组成:方法+路径+http版本 - 响应报文起始行:
HTTP/1.1. 200 OK
,组成:http版本、状态码、原因
- 请求报文起始行:
- 头部
- 字段名不区分大小写
- 字段名不允许出现空格
- 字段名必须紧接着:
- 空行:区分头部和实体,空行后的内容全部视为实体
- 实体:具体的数据,body部分,请求报文对应请求体,响应报文对应响应体
02.HTTP请求方法
- get:获取资源
- head:元信息
- post:提交数据
- put:修改数据
- delete:删除数据
- options:跨域请求
03.Get与Post区别
- 缓存:get请求会被浏览器主动缓存,留下历史记录,而post不会;
- 编码:get只能进行URL编码,而post没有限制;
- 参数:get一般存放在URL中,不安全,post放在请求体中;
- 大小:get存在限制,post没有限制;
- 从TCP:get请求会把请求报文一次性发出去,而post会分为两个TCP数据包,先header后body
http与https区别
- http:超文本传输协议,信息是明文传输,https是加密传输
- 连接端口不同:http:80;https:443
- http的连接简单,是无状态的,无需证书,https是SSL证书+http的可进行加密传输的网络协议
04.URL完整结构
scheme://host:port/path?query#fragment
-
scheme:协议名,
http
、https
-
host:port:主机名端口号
-
path:请求路径
-
query:请求参数,以key=value形式,多个键值用&区分
-
fragment:锚点,浏览器可以根据锚点跳到对应位置
https://www.baidu.com/s?wd=HTTP&rsv_spt=1#fragment
https–>scheme,
www.baidu.com
–>host:port,/s–>path,wd=HTTP&rsv_spt=1–>query,fragment锚点
05.HTTP状态码
- 1xx:表示目前是协议处理的中间状态,需后续操作
- 2xx:成功状态
- 3xx:重定向状态,资源位置发送变动,需要重新请求
- 4xx:请求报文有误
- 5xx:服务器端发生错误
101:在http升级时候,服务器同意变更,就返回状态码101
200:成功的状态码
204:成功的状态码,但是响应头没有body数据
301:永久重定向 从旧到新,旧的不再使用,返回301,第二次访问会直接到新
302:临时重定向 只是暂时不可以,返回302,不会做缓存优化
400:数据格式出现问题
403:服务器禁止访问
404:资源未找到
405:请求方法不被服务器端允许
406:资源无法满足客户端条件
408:服务器等待时间太长
409:多个请求发送冲突
413:请求体数据过大
414:请求行里URL过大
500:服务器出错
501:客户端请求的功能还不支持
502:服务器自身正常,但是访问出错
503:服务器忙,无法响应
200:成功