一、HTTP协议介绍
HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本。
超文本:视频,音频,图片...
HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。
二、URL
就是我们平时说的网址。
我们会发现好像https协议里面没有端口号,真是这样的话就不能找到一个唯一的资源。
其实协议名称和端口号是强相关的,当浏览器发起请求时会自动拼接端口号80,也就是https对应80号端口,所以端口号被默认忽略。
注意:
URL里面有自己的特殊字符,://#=&,若用户访问资源时URL里面要拼接这些字符就会对URL产生干扰,所以要对特殊字符进程编码(urlencode:% + 特殊字符ASCII码的16进制)
三、HTTP协议请求格式
请求方法:GET,POST,HEAD,DELETE...
URI:要访问的资源路径,不区分URL
HTTP版本:http/1.0 http/1.1 http/2.0 ...
四、HTTP协议应答格式
应答正文一定有资源路径。
五、HTTP请求方法
1、GET
一般用来获取静态资源,也可以通过 url 向服务器发送参数。
如上图,?字符之后就是参数,username 是 .sgrh,还有一个参数 password 是 190420
2、POST
通过 http 请求正文发送参数
3、GET vs POST
(1)url 传递参数大小不大
(2)POST 比 GET 传参更私密,但两者都不安全,要对正文加密才安全。
4、如何实现请求方法
前端网页必须要有 form 表单,默认 method 是 GET
若 method 是 GET,用户名密码写入请求的 url 中。
若 method 是 POST,用户名密码写入请求的正文中。
action 是一种服务,一个写好的业务。
这里的 /s 就是百度的一个业务 search,参数有 wd=hello,是搜索关键字 hello
六、HTTP常见请求报头
Content-Type: 数据类型(text/html 等)
Content-Length: 正文的长度。
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上。
User-Agent: 声明用户的操作系统和浏览器版本信息。
referer: 当前页面是从哪个页面跳转过来的。
Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问。
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的。
connection报头
HTTP 中的 Connection 字段是 HTTP 报文头的一部分,它主要用于控制和管理客户 端与服务器之间的连接状态
核心作用
管理持久连接:Connection 字段还用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接 上发送多个请求和接收多个响应。
HTTP/1.1:在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明 确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连 接。
HTTP/1.0:在 HTTP/1.0 协议中,默认连接是非持久的。如果希望在 HTTP/1.0 上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。
语法格式
Connection: keep-alive:表示希望保持连接以复用 TCP 连接。
Connection: close:表示请求/响应完成后,应该关闭 TCP 连接。
Cookie 报头
用于在客户端存储少量信息,用于会话功能,方便随时验证用户身份。
例如,一开始你访问爱奇艺网站,你要先登录,如果你不是会员,你就要看广告,当你去看下一集时网站在此建立请求,如果没有 cookie 保存用户信息,你又要登录。
所以客户端发给服务器请求时会带上 cookie 信息,告诉服务器用户身份。
七、HTTP状态码和状态码描述
1、介绍状态码
|-----|-----------------------|--------------------------------------|
| 状态码 | 含义 | 举例 |
| 100 | Continue | 我接受了你的请求,请你继续。上传大文件时,服务器告诉客户端可以 继续上传 |
| 200 | OK | 请求处理完成,过程一切正确 |
| 201 | Created | 创建成功(文件,文章...) |
| 204 | No Content | 删除成功(文件,文章...) |
| 301 | Moved Permanently | 网站换域名后,自动跳转到新域名;搜 索引擎更新网站链接时使用 |
| 302 | Found | 用户登录成功后,重定向到用户首页 |
| 304 | Not Modified | 浏览器缓存机制,对未修改的资源返回 304 状态 |
| 400 | Bad Request | 填写表单时,格式不正确导致提交失败 |
| 401 | Unauthorized | 访问需要登录的页面时,未登录或认证 失败 |
| 403 | Forbidden | 尝试访问你没有权限查看的页面 |
| 404 | Not Found | 访问页面不存在 |
| 500 | Internal Server Error | 服务器崩溃或数据库错误导致页面无法 加载 |
| 502 | Bad Gateway | 使用代理服务器时,代理服务器无法从 上游服务器获取有效响应 |
| 503 | Service Unavailable | 服务器维护或过载,暂时无法处理请求 |
2、理解重定向
3、永久重定向 vs 临时重定向
(1)永久重定向
当服务器发生更改,老客户访问时会被添加包含新服务器 url 的 Location 请求报头,浏览器自动重定向。一般用于网站更换域名之后自动跳转到新域名,给搜索引擎更新连接使用(新替换旧)
(2)临时重定向
也会添加 Location 报头,但是不会缓存重定向,一般用于临时从一个页面跳转到另一个页面。