HTTP 协议相关解析
- 什么是 HTTP 协议:HTTP 协议即 “超文本传输协议”,它规定了客户端与服务器之间数据通信的规则。其底层基于 TCP 协议,而 TCP 协议具有面向连接、安全且无状态的特点。在当下的 Web 开发中,几乎所有请求都是基于 HTTP 协议或 HTTPS 协议的。
- HTTP 与 HTTPS 的区别:
- 安全性:HTTP 协议以明文传输信息,敏感信息若被截取可直接获取;HTTPS 基于 SSL 加密传输,能确保数据安全。
- 端口:HTTP 默认端口是 80,HTTPS 默认端口是 443。
- 资源消耗:HTTP 安全性较低,但 HTTPS 会耗费更多服务器资源。
- GET 与 POST 请求方式的区别:
- 参数大小限制:GET 请求参数在 URL 中传递,受 URL 长度限制;POST 请求参数在请求体中传递,仅受服务器配置限制。
- 安全性:GET 参数暴露在 URL 中,安全性低,不适合传递敏感信息;POST 参数在 HTTP 消息体中,安全性相对较高。
- 应用场景:GET 一般用于获取数据,POST 用于提交数据。
- 进阶:在 Restful 风格开发中,除 GET、POST 外,PUT、DELETE 等请求方式也常用。
- Restful 风格:是一种软件架构风格(可打破),核心特点为:通过请求 URL 定位要操作的资源(如
http://localhost:8080/users/1定位 1 号用户资源);通过请求方式决定操作(GET 查询、POST 新增、PUT 修改、DELETE 删除)。 - 常见 HTTP 状态码:分为 5 类,常见的有:
- 101:临时状态码,请求已接受,服务器正在处理(如 WebSocket 使用时)。
- 200:请求成功。
- 302:重定向。
- 401:需要用户身份认证,未认证时响应。
- 404:服务器无法找到对应资源(请求路径错误)。
- 500:服务器内部错误。
- 转发与重定向的区别:
- 转发:服务器端操作,收到请求后转发给另一个资源处理,再返回结果,整个过程仅一次请求,对客户端透明。
- 重定向:客户端操作,服务器返回 3xx 状态码及新 URL(Location 响应头),浏览器向新 URL 发起新请求,共两次请求。
- Cookie 会话跟踪原理:Cookie 是客户端会话跟踪方案,基于 HTTP 协议的两个头信息:
- 首次访问:服务器创建 Cookie,通过
Set-Cookie响应头传给浏览器,浏览器存储。 - 后续请求:浏览器通过
Cookie请求头携带 Cookie 到服务器,实现会话跟踪。但 Cookie 存储在客户端,用户可删除或禁用,安全性较低。
- Session 会话跟踪原理:Session 是服务端会话跟踪方案,底层基于 Cookie:
- 首次访问:服务器创建 Session(含唯一 ID),将数据存入 Session,通过
Set-Cookie将 Session 的 ID(JSESSIONID)传给浏览器,浏览器存储。 - 后续请求:浏览器携带 JSESSIONID 到服务器,服务器据此找到对应 Session,操作其中数据。Session 存储在服务器,较安全,但集群环境下存在 Session 共享问题。