码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • web 面试高频考点 —— HTTP 篇


    系列文章目录


    文章目录

    • 系列文章目录
    • http 面试题
      • 一、http 常见状态码
        • 1、状态码分类
        • 2、常见状态码
      • 二、什么是 Restful API
        • 1、传统的 methods
        • 2、现在的 methods
        • 3、Restful API
        • 4、如何设计一个资源
        • 5、不使用 url 参数
        • 6、用 method 表示操作类型
      • 三、http 常见 header
        • 1、Request Headers
        • 2、Response Headers
        • 3、缓存相关的 headers
      • 四、Cache-Control - http 强制缓存
        • 1、Cache-Control
        • 2、cache-control 的值
        • 3、关于 Expires
      • 五、协商缓存
        • 1、资源标识
        • 2、headers 示例
        • 3、请求示例
        • 4、Last-Modified 和 Etag
        • 5、http 缓存综述
      • 六、刷新页面对 http 缓存的影响
        • 1、三种刷新操作
        • 2、不同刷新操作,不同的缓存策略
      • 七、http 加密方式
      • 八、https 证书


    http 面试题

    一、http 常见状态码

    1、状态码分类

    • 1xx 服务器收到请求
    • 2xx 请求成功,如 200
    • 3xx 重定向,如 302
    • 4xx 客户端错误,如 404
    • 5xx 服务端错误,如 500

    2、常见状态码

    • 200 成功
    • 301 永久重定向(配合 location,浏览器自动处理)
    • 302 临时重定向(配合 location,浏览器自动处理)
    • 304 资源未被修改
    • 404 资源未找到
    • 403 没有权限
    • 500 服务器错误
    • 504 网关超时

    二、什么是 Restful API

    1、传统的 methods

    • get 获取服务器数据
    • post 向服务器提交数据
    • 简单的网页功能,就这两个操作

    2、现在的 methods

    • get 获取数据
    • post 新建数据
    • patch/put 更新数据
    • delete 删除数据

    3、Restful API

    • 一种新的 API 设计方法(早已推广使用)
    • 传统 API 设计:把每个 url 当作一个功能
    • Restful API 设计:把每个 url 当作一个唯一的资源

    4、如何设计一个资源

    • 尽量不用 url 参数
    • 用 method 表示操作类型

    5、不使用 url 参数

    • 传统 API 设计:/api/list?pageIndex=2
    • Restful API 设计:/api/list/2

    6、用 method 表示操作类型

    传统 API 设计

    • post 请求:/api/create-blog
    • post 请求:/api/update-blog?id=100
    • get 请求:/api/get-blog?id=100

    Restful API 设计

    • post 请求:/api/blog
    • patch 请求:/api/blog/100
    • get 请求:/api/blog/100

    三、http 常见 header

    1、Request Headers

    • Accept 浏览器可接收的数据格式
    • Accept-Encoding 浏览器可接收的压缩算法,如 gzip
    • Accept-Language 浏览器可接收的语言,如 zh-CN
    • Connection:keep-alive 一次 TCP 连接重复使用
    • cookie:储存在用户本地终端上的数据
    • Host:请求的域名
    • User-Agent(简称 UA)浏览器信息
    • Content-type 发送数据的格式,如 application/json

    2、Response Headers

    • Content-type:返回数据的格式,如 application/json
    • Content-length:返回数据的大小,多少字节
    • Content-Encoding:返回数据的压缩算法,如 gzip
    • Set-Cookie:服务器端向用户代理发送 cookie

    3、缓存相关的 headers

    四、Cache-Control - http 强制缓存

    1、Cache-Control

    • Response Headers 中
    • 控制强制缓存的逻辑
    • 例如:Cache-Control:max-age=31536000 (单位:秒)

    图片出处:https://coding.imooc.com/lesson/400.html#mid=36807
    在这里插入图片描述
    在这里插入图片描述

    2、cache-control 的值

    • max-age:做本地的强制缓存(限制缓存时间)
    • no-cache:不做本地的强制缓存,去服务端请求(如html)
    • no-store:不做本地的强制缓存,也不用服务端做缓存
    • private:只有某个在通过缓存服务器的时候,得到缓存资源
    • public:所有的用户在通过缓存服务器的时候,都可以缓存这个资源

    3、关于 Expires

    • 同在 Response Headers中
    • 同为控制缓存过期
    • 已被 Cache-Control 代替

    五、协商缓存

    • 服务器端缓存策略
    • 服务器判断客户端资源,是否和服务端资源一样
    • 一致则返回 304,否则返回 200 和最新的资源

    图片出处:https://coding.imooc.com/lesson/400.html#mid=36668
    在这里插入图片描述

    1、资源标识

    • 在 Response Headers 中,有两种
    • Last-Modified 资源的最后修改时间
    • Etag 资源的唯一标识(一个字符串,类似人类的指纹)

    图片出处:https://coding.imooc.com/lesson/400.html#mid=36668
    在这里插入图片描述
    在这里插入图片描述

    2、headers 示例

    在这里插入图片描述

    3、请求示例

    在这里插入图片描述

    4、Last-Modified 和 Etag

    • 会优先使用 Etag
    • Last-Modified 只能精确到秒级
    • 如果资源被重复生成,而内容不变,则 Etag 更精确

    5、http 缓存综述

    在这里插入图片描述

    六、刷新页面对 http 缓存的影响

    1、三种刷新操作

    • 正常操作:地址栏输入url,跳转链接,前进后退
    • 手动刷新:F5,点击刷新按钮,右击菜单刷新
    • 强制刷新:ctrl + F5

    2、不同刷新操作,不同的缓存策略

    • 正常操作:强制缓存有效,协商缓存有效
    • 手动刷新:强制缓存失效,协商缓存有效
    • 强制刷新:强制缓存失效,协商缓存失效

    七、http 加密方式

    须知:

    • http 是明文传输,敏感信息容易被中间劫持
    • https = http + 加密,劫持了也无法解密
    • 现代浏览器已开始强制 https 协议

    加密方式:

    • 对称加密:一个 key 同负责加密、解密
    • 非对称加密:一对 key,A 加密之后,只能由 B解密
    • https 同时用到了这两种加密方式

    八、https 证书

    • 中间人攻击
    • 使用第三方证书(慎用免费、不合规的证书)
    • 浏览器校验证书

    总过程图:

    在这里插入图片描述
    出处:https://coding.imooc.com/lesson/400.html#mid=47935

    不积跬步无以至千里 不积小流无以成江海

    点个关注不迷路,持续更新中…

  • 相关阅读:
    当EAI遇见RPA:破解接口难题,助力数据打通
    中国室内门行业发展动态及前景规划建议报告2022年版
    具备自纠正和逐维学习能力的粒子群算法-附代码
    记一次接口分析
    Nginx源码分析--单个缓冲区
    【MySQL、SQL Server、Redis、Rabbitmq、Kafka】——简介
    Leetcode hot 100之二叉树
    css第九课:文本属性
    东芝工控机维修东芝电脑PC机维修FA3100A
    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份
  • 原文地址:https://blog.csdn.net/qq_45902692/article/details/126213301
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号