[交互]交互的实战问题1

news2024/11/15 3:35:53

[交互]交互的实战问题1

  • 状态码 431 Request Header Fields Too Large
  • Referrer Policy: no-referrer-when-downgrade
  • 路径参数
  • 高并发问题
    • 使用场景
    • 使用的方法
    • 异常情况

状态码 431 Request Header Fields Too Large

最近做项目,遇到一个问题,后台导出表格时,当条数超过一定数量时,会报:431 Request Header Fields Too Large 的问题,然后就在网上搜索这个问题,本质的问题就是 http 请求 header 过大。

这个问题网上的解决方案基本一致,就是修改服务器的 header 的大小。方案如下:

在 springboot 项目中,在 yml 文件中,添加如下内容:

server:
port: 8090
tomcat:
max-swallow-size: -1
max-http-header-size: 2MB

需要说明的是,max-http-header-size 是在 server 下,不是 tomcat 下。

网上很多人这样修改后都成功了,我的依旧报这个错误。然后我分析了一下,既然是服务器的问题,我用的是前后端分离,请求首先到达的是 ngnix,然后我又查了 ngnix 相关的修改,ngnix.conf 的修改如下:

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #'$status $body_bytes_sent "$http_referer" '
    #'"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    client_header_buffer_size 10240k;
    large_client_header_buffers 6 10240k;
}

就是修改了 client_header_buffer_size 和 large_client_header_buffers 两个值。如果你的 ngnix.conf 中没有这个值,添加上就行。

修改后,项目的问题就没有了。

Referrer Policy: no-referrer-when-downgrade

发出请求,导致出现 Referrer Policy: no-referrer-when-downgrade,一直请求不成功

分析后发现,是请求连接出现问题,我这里的问题是-api 前少了/,导致请求 API 和域名拼接起来,所以导致上方问题。

  • referrer-http 表示请求来源的字段
  • no-referrer-when-downgrade 表示从 https 协议降级为 http 协议时不发送 referrer 给跳转到的网站的服务器。

路径参数

路径参数,这里的路径参数是指请求路径中拼接的参数,不是指 get 请求后拼接的参数

示例:

/car/{id}/color

我看到服务端大多使用路径参数,我很少使用改方式,主要是{id}作为一个参数,存在很多不确定性,例如:id 中有.等特殊字符会导致服务端参数获取出现问题,会增加报错的风险

示例:
获取所有 year 生产的车列表

/car/{year}

获取所有具有某个色号的车列表

/car/{colorId}

以上则会产生混乱的风险

虽然也可以通过添加前缀加以区分,但是为什么要使用该方式?通过解说,发现这个好像是后端 restful 风格的最佳实践…

高并发问题

使用场景

一般当页面初始化的时候,可能存需要通过多个接口获取多个初始化数据

单个接口分别发出请求也能达到获取初始化数据,但是如果请求过多,并且获取的时间相差太大,导致有的接口已经完成有的仍在获取,影响用户操作,因此希望三者可以同步

使用的方法

const config = {
  url: "",
  method: "",
  params: {} //get 方法,其他的是data
};

axios.all([axios(config1), axios(config2), axios(config3)]).then(
  axios.spread(function (res1, res2, res3) {
    console.log("所有请求完成");
    console.log("请求1结果", res1);
    console.log("请求2结果", res2);
    console.log("请求3结果", res3);
  })
);

异常情况

只要一个接口存在异常,就无法获取正常返回接口的处理,只能对异常的结果进行处理

虽然返回的异常结果可以明确说明是哪个接口,并返回错误信息,但是当有多个接口错误的时候,仅仅返回第一个错误的信息,其他接口的错误信息并不返回,并且正常的接口也没有返回信息,无法回调
在这里插入图片描述

而在正常情况下,我们需要针对正常与异常返回数据的接口,分别回调进行数据处理

此时在网上找到了解决的方案,但是网上的代码有点难以理解,理解了半天,终于明白,关键问题是添加以下代码:

axios(one).catch((error) => ({ error }));

最终代码为:

const all = (config) => {
  const list = config.map((one) => {
    return axios(one).catch((error) => ({ error }));
  });
  return new Promise((resolve, reject) => {
    axios
      .all(list)
      .then((...res) => {
        const someError = res.some((one) => one.error);
        if (someError) {
          throw res;
        }
        resolve(res);
      })
      .catch((erro) => {
        reject(erro);
      });
  });
};

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

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

相关文章

牛客: BM4 合并两个排序的链表

牛客: BM4 合并两个排序的链表 文章目录 牛客: BM4 合并两个排序的链表题目描述题解思路题解代码 题目描述 题解思路 以链表一为主链表,遍历两条链表 若当前链表二的节点val小于当前链表一的下一个节点val,则将链表链表二的该节点连到链表一的节点的下一个,链表一的当前节点往…

sql存储引擎

-- 查询建表语句 --可以查看引擎 show create table account; -- 可以看到默认引擎 InnoDB ENGINEInnoDB -- 查看当前数据库支持得存储引擎 show engines ; # InnoDB 默认 存储引擎 # MyISAM sql早期默认 存储引擎 # MEMORY 存储在内存中 用来做临时表和缓存 存储引擎 …

Adobe Acrobat Reader 中的漏洞

另一个流行漏洞 Adobe Acrobat 和 Acrobat Reader - 流行的便携式文档格式 (PDF) 工具 - 存在风险。该漏洞 CVE-2023-26369影响 Windows 和 macOS 安装。 攻击者创建的恶意 PDF 文档打开后,会利用与在缓冲区外写入有关的 CVE-2023-26369漏洞。因此,攻击…

数据中心液冷服务器详情说明

目录 前言 何为液冷服务器? 为什么需要液冷? 1.数据中心降低PUE的需求 2.政策导向 3.芯片热功率已经达到风冷散热极限 4.液冷比热远大于空气 液冷VS风冷,区别在哪? 1.液冷服务器跟风冷服务器的区别 2.液冷数据中心跟风冷…

linux安装常见的中间件和数据库

文章目录 一、数据库二、redis三、tomcat四、nginx五、mq六、es七、nacos八、neo4j(图数据库)九、fastdfs其他 一、数据库 linux环境上使用压缩包安装mysql【数据库】Mysql 创建用户与授权 二、redis redis是没有账号的,只能设置密码Linux…

对IP协议概念以及IP地址的概念进行简单整理

网络层重要协议 参考模型和协议栈IP协议IPv4数据报IP数据报格式IPv4地址特殊IP地址私有IP地址和公有IP地址子网划分 参考模型和协议栈 IP协议 IP协议定义了网络层数据传送的基本单元,也制定了一系列关于网络层的规则。 IPv4数据报 网络层的协议数据单元PDU 叫做分…

GeoSOS-FLUS未来土地利用变化情景模拟模型

软件简介 适用场景 GeoSOS-FLUS软件能较好的应用于土地利用变化模拟与未来土地利用情景 的预测和分析中,是进行地理空间模拟、参与空间优化、辅助决策制定的有效工 具。FLUS 模型可直接用于: 城市发展模拟及城市增长边界划定;城市内 部高分…

分布式事务解决方案之TCC

分布式事务解决方案之TCC 什么是TCC事务 TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认 Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个…

Golang代码漏洞扫描工具介绍——govulncheck

Golang Golang作为一款近年来最火热的服务端语言之一,深受广大程序员的喜爱,笔者最近也在用,特别是高并发的场景下,golang易用性的优势十分明显,但笔者这次想要介绍的并不是golang本身,而且golang代码的漏洞…

微信小程序+echart实现点亮旅游地图

背景 最近看抖音有个很火的特效就是点亮地图,去过哪些地方,于是乎自己也想做一个,结合自己之前做的以家庭为单位的小程序,可以考虑做一个家庭一起点亮地图的功能。 效果图 过程 1,首先就是得去下微信小程序适配的ec…

react 实现拖动元素

demo使用create-react-app脚手架创建 删除一些文件,创建一些文件后 结构目录如下截图com/index import Movable from ./move import { useMove } from ./move.hook import * as Operations from ./move.opMovable.useMove useMove Movable.Operations Operationse…

ABB 1TGE120010R... Rev控制模块

ABB 1TGE120010R... Rev 控制器模块是一种高性能控制器,可用于工业自动化和过程控制应用。它具有以下主要特点: 多功能性:该控制器模块可用于多种应用,包括机器控制、过程控制和自动化系统等。 高性能:该控制器模块具…

竞赛选题 基于机器视觉的火车票识别系统

文章目录 0 前言1 课题意义课题难点: 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的火车票识别系统 该项目较为新颖,适合作为竞赛…

408强化(番外)文件管理

有点看不下去书,408,哎好久没看了,死磕数学时完全不想看其他科目,数学分数也尚未质变。 突然想到一个好点子,只看大纲尝试回忆一下这章的内容。 文件就是为了方便用户使用,按名访问而提出的,从…

Python进阶教学——多线程高级应用

目录 一、线程间的通讯机制 二、线程中的消息隔离机制 三、线程同步信号量 四、线程池和进程池 一、线程间的通讯机制 1、Queue消息队列 消息队列是在消息的传输过程中保存消息的容器,主要用于不同线程间任意类型数据的共享。消息队列最经典的用法就是消费者和…

【Linux】项目自动化构建工具 make/Makefile

1、背景原理 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功…

Day 01 web前端基础知识

首先我们要了解什么事前端? 先简单用文字介绍一下: 一、入门知识 Web前端是指网站或应用程序的用户界面部分。它包括HTML、CSS、JavaScript等语言和技术,用于创建用户可浏览和交互的网页。Web前端的特点在于其交互性和动态性,可…

富芮坤蓝牙FR801xH GPIO

通过规格书,可查看到芯片共有32个引脚,如图: 除如电源、晶振等固定用途的引脚外,开发板已引出其余引脚。 通常情况下,一个IO口除了可作普通输入输出口外,还有可能作其它用途,如作I2C接口的数据…

Linux static_key原理与应用

文章目录 背景1. static-key的使用方法1.1. static-key定义1.2 初始化1.3 条件判断1.4 修改判断条件 2、示例代码参考链接 背景 内核中有很多判断条件在正常情况下的结果都是固定的,除非极其罕见的场景才会改变,通常单个的这种判断的代价很低可以忽略&a…

18 自增长主键的实现 以及 记录的插入

前言 这里主要是 探索一下 mysql 的自增长主键 和 insert into tz_test (field1) values ("12111111111"); 的实现 这里 有一些地方 会有不求甚解的地方, 不然 篇幅 就有点太长了 测试表结构 mysql 主键自增长 读取自增长值的地方, 读取 table->autoinc 作…