【面试题】http协议

news2024/11/15 15:47:09

1. http状态码

  • 1xx:服务器收到请求,但是没有返回结果。
  • 2xx:请求成功。200成功。
  • 3xx:重定向。301永久重定向,302临时重定向,304资源未被修改。
  • 4xx:客户端错误。404资源未找到,403没有访问权限。
  • 5xx:服务端错误。500服务器错误,504网关超时。

2. http methods

2.1 传统的methods

methods作用
get用于请求服务器的数据
post向服务器提交数据

2.2 现在的methods

methods作用
get获取数据
post新建数据
patch更新数据
delete删除数据

2.3 Restful API

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

Restful不使用URL参数
在这里插入图片描述
传统API设计,用method表示操作类型

在这里插入图片描述
Restful API设计,用method表示操作类型
在这里插入图片描述

3. http headers

3.1 请求头 Request headers

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

3.2 响应头 Response headers

Response headers解释
Content-type返回数据的格式,如application/json
Content-length返回数据的大小,多少字节
Content-Encoding返回数据的压缩算法,如gzip
Set-Cookie服务端修改cookie

3.3 缓存相关的headers

  • Cache-Control
  • Expires
  • Last-Modified
  • If-Modified-Since
  • Etag
  • If-None-Match

4. http缓存

浏览器第一次访问网站时,服务端需要把数据发送给服务器,当浏览器再次访问网站时,服务器就不需要再次发送,浏览器可以从缓存中获取数据。网络请求不稳定,缓存可以减少网络请求的数量,提升加载和渲染的效率。

4.1 强制缓存(Cache-Control)

强制缓存Cache-Control,加在Response headers中,可以加快页面的访问速度。
例如:Cache-Control:max-age=31536000 (单位是秒)
在这里插入图片描述

Cache-Control的值解释
max-age缓存的最大过期时间
no-cache不使用本地缓存,向服务器正常发送请求
no-store不使用本地缓存,也不使用服务端的缓存策略
private只允许最终用户进行缓存
public允许中间代理进行缓存

4.2 协商缓存(对比缓存)

协商缓存是服务端的缓存策略,服务端判断资源是否可以直接使用本地缓存中的内容。
服务端判断客户端资源(使用资源标识进行判断),如果请求的资源和服务端一样,就返回304,直接使用本地缓存中的资源;如果请求的资源和服务端资源不一样,就返回200和最新的资源。
在这里插入图片描述
资源标识保存在Response Headers中,有两种:

  1. Last-Modified 资源的最后修改时间
  2. Etag 资源的唯一标识(一个字符串)

Last-Modified只能精确到秒级,Etag更精确,优先使用Etag。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 刷新对缓存的影响

刷新方式刷新操作对缓存的影响
正常刷新:地址栏输入URL,点击跳转链接,地址的前进后退强制缓存√ 协商缓存√
手动刷新:F5强制缓存× 协商缓存√
强制刷新:Crtl + F5强制缓存× 协商缓存×

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计基于Springboot药品仓库及预警管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

引擎入门 | Unity UI简介–第2部分(4)

本期我们继续为大家进行Unity UI简介(第二部分)的后续教程 本篇内容 6.添加设置对话框 7.设置对话框的背景图像 8.添加标签 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介(第二部分)篇幅较长,分为八篇&…

Xylan-Alkyne木聚糖-炔基|炔基-PEG-木聚糖

Xylan-Alkyne木聚糖-炔基|炔基-PEG-木聚糖 中文名称:木聚糖-炔基 英文名称:Xylan-Alkyne 别称:炔基修饰木聚糖,炔基-木聚糖 还可以提供PEG接枝修饰木聚糖,Xylan-PEG-Alkyne 木聚糖-聚乙二醇-炔基,炔基-…

​创业15年,50岁回到农村过上退休的生活,上班和创业是两难的选择。

我是老马,现在在农村老家生活1个月。 15年前,大学毕业三年后,在县城里搞到一份稳定的工作,朝九晚五,不慌不忙,结婚生子,后来又这样安安稳稳的过了10年,攒了一些钱,但生活…

【HTML学生作业网页】基于HTML+CSS+JavaScript仿南京师范大学泰州学院(11页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

llvm-ir之核心类设计

llvm-ir之核心类设计引言1 逻辑关系2 class Module3 class IRBuilder4 class Instruction5 class Constant引言 llvm IR是llvm对代码的一种中间表示。它来源AST(抽象语法树),是llvm代码优化的主要对象。 1 逻辑关系 IR的很多组成元素都是以Value为基类。llvm并没有…

【web3空投】SINSO 主网公测空投

Web3.0 基础设施简化去中心化的热数据缓存和数据治理 文章目录1. SINSO Token介绍2. SINSO 主网公测空投2.1 时间2.2 奖励2.3 参与方式2.3.1 第一步(必须完成)2.3.2 第二步(成为矿工)2.3.3 第三步(成为节点担保人)2.3.4 第四步:公开测试反馈表3. 注意事项4. 成为矿工…

这几个方法让你实现EXCEL文件翻译成中文

在日常的工作中,如果遇到需要将EXCEL翻译成其它语言的的时候,我们该怎么办呢?一行一行的复制查找,然后再粘贴回表格中吗?这样操作的话,不仅浪费时间和精力,而且效率还非常的低。那有什么方法可以…

Java项目:SSM图书馆图书管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 读者角色包含以下功能: 读者登录,图书查询,借阅图书,借阅管理,修改密码,借阅记录等功能。 管理员角色包含以下功能: 管理…

Android 系统启动到App 界面完整详解~

通过本篇文章,你将了解到: Android 系统启动流程概览ServiceManager 进程作用Zygote 进程创建与fork子进程system_server 进程作用App 与 system_server 交互Activity 与 View的展示全流程图 1. Android 系统启动流程概览 init 是用户空间的第一个进程&a…

ARM基础(1):Cortex-M3寄存器

Cortex-M3处理器的寄存器包括R0~R15和一些特殊的寄存器。其中R0到R12是通用寄存器,但是一些16位的Thumb指令只能访问R0到R7(低寄存器),而32位的Thumb-2指令则可以访问所有这些寄存器。特殊寄存器只能通过特殊访问指令访问。 所有的寄存器如下图所示&…

Java安全--篇四-Java原生反序列化

Java原生序列化和反序列化 看理论: 序列化和反序列化的详解_tree_ifconfig的博客-CSDN博客_序列化和反序列化 java序列化与反序列化全讲解_mocas_wang的博客-CSDN博客_java反序列化 java 序列化和反序列化 - xbwang520 - 博客园 序列化和反序列化的简单图解&am…

[附源码]Python计算机毕业设计Django微录播室预约管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【计算机网络】超详细——VLAN、Trunk的配置

1、VLAN 1.1 什么是VLAN? VLAN:即Virtual Local Area Network(虚拟局域网),是物理设备上连接的不受物理位置限制的用户的一个逻辑组,将一个物理LAN划分成多个广播域的通信技术;每一个VLAN是一…

想要高效运行SolidWorks,云上设计了解一下

SolidWorks是达索系统(Dassault Systemes S.A.)旗下SolidWorks公司开发的,运行在微软Windows平台下的第一个三维机械设计软件,涵盖非常广泛的横截面制造业细分市场,目前广泛应用在航天、建筑、汽车生产企业、模具生产企…

[附源码]Python计算机毕业设计Django农产品销售网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

C语言学习之路(基础篇)—— 文件操作(下)

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 文件的随机读写 1) fseek 表头文件&#xff1a;#include <stdio.h>定义函数&#xff1a;int fseek(FILE *stream, long offset, int whenc…

【网络层】BGP协议详解、三种路由协议总结

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录BGP协议------外部网关协议----BGP发言人交换网络可达性信息树形结构---防止兜圈子---交换完整路径信息---路径向量BGP格式---应用层协议-------TCP传送-----先建立TCP连接-----建立BGP session---利用会话交…

[附源码]JAVA毕业设计律师事务管理系统(系统+LW)

[附源码]JAVA毕业设计律师事务管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

MyBatisPlus_快速入门_笔记

MyBatisPlus_快速入门_笔记 文章目录MyBatisPlus_快速入门_笔记学习目标一、MyBatisPlus简介1. 入门案例问题导入1.1 SpringBoot整合MyBatisPlus入门程序①&#xff1a;创建新模块&#xff0c;选择Spring初始化&#xff0c;并配置模块相关基础信息③&#xff1a;手动添加MyBati…