Skip to content

HTTP 面试题

Q1: HTTP 和 HTTPS 的区别

  • HTTPS = HTTP + TLS/SSL 加密传输
  • HTTPS 默认端口 443,HTTP 默认端口 80
  • HTTPS 需要 CA 证书,保证身份验证和数据完整性

Q2: HTTP 1.0 / 1.1 / 2.0 / 3.0 的区别

版本特点
HTTP 1.0短连接,每次请求重新建立 TCP
HTTP 1.1长连接(keep-alive)、管道化、Host 头
HTTP 2.0多路复用、头部压缩(HPACK)、服务器推送、二进制分帧
HTTP 3.0基于 QUIC(UDP),解决队头阻塞

Q3: HTTP 请求方法

方法用途幂等安全
GET获取资源
POST创建资源
PUT更新/替换
PATCH部分更新
DELETE删除资源
HEAD获取响应头
OPTIONS查询支持方法

Q4: HTTP 状态码

1xx(信息)

  • 101:切换协议(WebSocket 升级)

2xx(成功)

  • 200:成功
  • 201:已创建
  • 204:无内容

3xx(重定向)

  • 301:永久重定向
  • 302:临时重定向
  • 304:未修改(缓存有效)

4xx(客户端错误)

  • 400:请求参数错误
  • 401:未认证
  • 403:无权限
  • 404:资源不存在
  • 405:方法不允许
  • 429:请求过多

5xx(服务端错误)

  • 500:服务器内部错误
  • 502:网关错误
  • 503:服务不可用
  • 504:网关超时

Q5: GET 和 POST 的区别

  • GET 参数在 URL 中,POST 在请求体中
  • GET 有长度限制(浏览器/服务器限制),POST 无
  • GET 可缓存、可收藏为书签,POST 不行
  • GET 不应修改服务器数据(幂等),POST 用于提交数据
  • GET 比 POST 更不安全(URL 明文参数)

Q6: 浏览器缓存策略

强缓存

  • Expires:绝对过期时间(HTTP 1.0)
  • Cache-Control: max-age=3600:相对过期时间(HTTP 1.1,优先级更高)

协商缓存

  • Last-Modified / If-Modified-Since:最后修改时间
  • ETag / If-None-Match:内容哈希(优先级更高)

流程:强缓存命中 → 直接使用缓存 → 不发送请求;强缓存失效 → 协商缓存 → 返回 304 或 200。

特性CookielocalStoragesessionStorage
容量4KB5-10MB5-10MB
发送到服务器✓(每次请求自动带)
过期时间可设置永久关闭标签页
作用域同源同源同源同标签

Q8: 跨域问题(CORS)

浏览器同源策略限制:协议、域名、端口任一不同即跨域。

解决方案:

  • CORS:服务端设置 Access-Control-Allow-Origin
  • JSONP:利用 script 标签不受同源限制(仅 GET)
  • 代理服务器:开发环境 Webpack/Vite proxy 配置
  • Nginx 反向代理:生产环境

CORS 预检请求

  • 非简单请求(PUT/DELETE/自定义头部)会先发 OPTIONS 请求
  • 服务端需返回 Access-Control-Allow-MethodsAccess-Control-Allow-Headers