刷刷题28(http)

一、HTTP与HTTPS的核心区别是什么?

  1. ‌端口不同‌:HTTP默认使用80端口,HTTPS使用443端口‌
  2. ‌安全性差异‌:HTTPS通过SSL/TLS协议加密传输数据,HTTP为明文传输‌
  3. ‌证书要求‌:HTTPS需CA证书验证服务器身份,HTTP无证书机制‌
  4. ‌连接方式‌:HTTPS建立连接需TLS握手,HTTP直接通过TCP三次握手‌

二、GET和POST请求的本质区别是什么?

  1. ‌数据位置‌:GET参数暴露在URL中,POST数据在请求体‌
  2. ‌安全性‌:POST更适合传输敏感数据(如密码),GET易被缓存/历史记录泄露‌
  3. ‌幂等性‌:GET是幂等操作,POST可能改变服务器状态‌
  4. ‌数据限制‌:GET有URL长度限制(一般2KB),POST理论上无限制‌

三、HTTP方法的幂等性和安全性如何定义?

  1. ‌幂等方法‌:多次执行效果相同(如GET、PUT、DELETE),非幂等方法如POST‌
  2. ‌安全方法‌:不修改服务器资源的操作(如GET、HEAD、OPTIONS)‌
  3. ‌PUT vs POST‌:PUT用于替换指定资源(幂等),POST用于创建新资源(非幂等)‌

四、HTTP/2的核心优化特性有哪些?

  1. ‌多路复用‌:单连接并行传输多个请求,解决队头阻塞‌
  2. ‌头部压缩‌:HPACK算法减少重复头部数据传输‌
  3. ‌服务器推送‌:主动推送关联资源(如CSS/JS)减少请求次数‌
  4. ‌二进制分帧‌:将报文分解为二进制帧传输,提升解析效率‌

五、HTTP状态码的分类及典型场景?

分类 范围 示例 场景
1xx 信息类 100 请求头已接收,等待发送Body‌
2xx 成功类 201 资源创建成功(如POST返回)‌
3xx 重定向 304 资源未修改,使用本地缓存‌
4xx 客户端错误 401 未授权访问资源‌
5xx 服务端错误 503 服务器过载或维护‌

六、HTTP持久连接如何提升性能?

  1. ‌减少握手次数 ‌:通过Connection: keep-alive复用TCP连接‌
  2. ‌管线化技术‌:无需等待响应即可发送后续请求(HTTP/1.1特性)‌
  3. ‌超时机制 ‌:通过Keep-Alive: timeout=60设置空闲连接保持时间‌

七、HTTP报文结构包含哪些核心部分?

  1. ‌请求报文‌:

    • 请求行(方法+URI+协议版本)
    • 头部字段(如Content-Type、Authorization)
    • 空行分隔符
    • 请求体(POST/PUT方法携带数据)‌
  2. ‌响应报文‌:

    • 状态行(协议版本+状态码+描述)
    • 头部字段(如Server、Cache-Control)
    • 空行分隔符
    • 响应体(HTML/JSON等实际数据)‌

八、跨域请求为何会触发OPTIONS预检?

  1. ‌安全策略‌:浏览器对非简单请求(如带自定义Header的POST)要求预检‌

  2. ‌预检流程‌:

    • 浏览器先发送OPTIONS请求验证服务器是否允许跨域
    • 服务器响应Access-Control-Allow-*头部声明允许的源/方法/Header‌
  3. ‌缓存优化 ‌:通过Access-Control-Max-Age减少重复预检请求‌


九、HTTP缓存机制如何实现?

  1. ‌强缓存‌:

    • Cache-Control: max-age=3600(优先级高于Expires)‌
    • Expires: Wed, 10 Mar 2025 08:00:00 GMT(绝对时间)‌
  2. ‌协商缓存‌:

    • Last-Modified+If-Modified-Since(时间戳验证)‌
    • ETag+If-None-Match(哈希值验证,精度更高)‌

十、Cookie和Session如何解决HTTP无状态问题?

  1. ‌Cookie机制‌:

    • 服务端通过Set-Cookie头部下发标识,客户端后续请求自动携带‌
    • 属性包括Domain(作用域)、HttpOnly(防XSS)、Secure(仅HTTPS)‌
  2. ‌Session机制‌:

    • 服务端存储会话数据,通过Cookie中的SessionID关联用户‌
    • 分布式场景可通过Redis等中间件共享Session数据‌
相关推荐
锋行天下13 分钟前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
jktantan28 分钟前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
计算机魔术师1 小时前
Anthropic官方插件被「寄生」,背后是同一类攻击又来了
前端
我命由我123451 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
frjc1 小时前
分布式服务拆分实战指南:从底层逻辑到面试话术
微服务·面试·职场和发展
考研保研资料分享1 小时前
2025生科保研北大直博:英语摘要、科研PPT与赶场复盘
面试
key_3_feng1 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
程序员大阳2 小时前
副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式
javascript·json·序列化·反序列化·stringify·parse
香蕉大香蕉(06敬畏市场)2 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习
ShineWinsu2 小时前
对于Qt:QCheckBox常见属性的详细解析
c++·qt·面试·笔试·gui·qcheckbox·多选框