首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

记一次请求接口出现400响应码的诡异错误实录

前言最近业务碰到了一个诡异的400接口请求异常,部门用户通过浏览器访问出现400响应码错误,部分用户又能正常访问。该接口用postman请求访问,都能正常返回数据。...后端写客户端请求接口,也都能返回正常的数据。本文就来记录一下这次问题整体简化版请求链路如图问题排查过程因为不管是用postman或者是后端自己写客户端请求,都能返回正常的数据。...请求行如果超过一个缓冲区的大小,就会向客户端返回414(请求URI太大)错误请求头字段也不能超过一个缓冲区的大小,否则会向客户端返回400(错误请求错误。缓冲区仅按需分配。...400的情况问题原因梳理出现请求400的原因,确实是请求头过大的原因,但为什么通过postman或者后端请求就不会有问题,而通过浏览器访问就会有问题,原因就是我们在处理跨域的时候,请求头加了一堆乱七八糟的东西...;其次为什么出现部分用户访问出现400,部分用户又不会,就是因为我们请求时,请求头会携带用户jwt token,该token的payload存放一堆跟用户相关的东西,比如权限id列表啥的,这样就导致有些用户的

33710

记一次请求接口出现400响应码的诡异错误实录

1 前言 最近业务碰到了一个诡异的400接口请求异常,部门用户通过浏览器访问出现400响应码错误,部分用户又能正常访问。该接口用postman请求访问,都能正常返回数据。...后端写客户端请求接口,也都能返回正常的数据。本文就来记录一下这次问题 2 简化版整体请求链路 如图 3 问题排查过程 因为不管是用postman或者是后端自己写客户端请求,都能返回正常的数据。...请求行如果超过一个缓冲区的大小,就会向客户端返回414(请求URI太大)错误请求头字段也不能超过一个缓冲区的大小,否则会向客户端返回400(错误请求错误。缓冲区仅按需分配。...400的情况 4 问题原因梳理 出现请求400的原因,确实是请求头过大的原因,但为什么通过postman或者后端请求就不会有问题,而通过浏览器访问就会有问题,原因就是我们在处理跨域的时候,请求头加了一堆乱七八糟的东西...; 其次为什么出现部分用户访问出现400,部分用户又不会,就是因为我们请求时,请求头会携带用户jwt token,该token的payload存放一堆跟用户相关的东西,比如权限id列表啥的,这样就导致有些用户的

22310

Linux服务器nginx访问日志里出现大量http400错误请求分析「建议收藏」

400错误,每次有大概连续出现1-6个不等,而且也并不是每次客户访问都会产生400错误。...再观察产生400错误的前一次访问是很正常的,200状态码,正常的文件,正常的来路,正常的User-Agent… 一切都很和谐,那400是肿么来的呢?...通过仔细观察发现,所有产生400错误的前一次访问的User-Agent都是Google Chrome浏览器留下的,也就是说400错误是由Chrome浏览器产生的。...在抓包分析中发现,Chrome在访问服务器时发起的连接不止一个,一般有5到6个不等,而如果请求的资源不需要那么多连接时,Chrome就会关闭未用的连接,这项技术叫做pre-connection“预先连接...像 LVS 之类什么的,也会引起这种问题,然后日志中会出现大量的 400 错误

2.4K30

SpringBoot限制接口访问频率 - 这些错误千万不能犯

最近在基于SpringBoot做一个面向普通用户的系统,为了保证系统的稳定性,防止被恶意攻击,我想控制用户访问每个接口的频率。...固定窗口 有人设计了一个在每分钟内只允许访问1000次的限流方案,如下图01:00s-02:00s之间只允许访问1000次,这种设计最大的问题在于,请求可能在01:59s-02:00s之间被请求1000...次,02:00s-02:01s之间被请求了1000次,这种情况下01:59s-02:01s间隔0.02s之间被请求2000次,很显然这种设计是错误的。...5次,但是如果用户在前一分钟只访问了三次,后一分钟访问了三次,在上面的实现里面,很可能在第6次访问的时候返回错误,但这样是有问题的,因为用户确实在两分钟内都没有超过对应的访问频率阈值。...为什么选择Redis zset ?

41410

公司规定所有接口都用 POST请求,这是为什么

最近在逛知乎的时候发现一个有趣的问题:《公司规定所有接口都用 post 请求,这是为什么?》...我个人在开发接口的时候也会注意,将简单的查询请求使用 get 方法,其他增、删、改、复杂的查询请求都可以使用 post,但不会像题主的公司一样全部使用 post。...而作为技术负责人,如果他搞出了一套接口方案(也许其中一条就是所有http接口都用post),提高了开发效率,降低了沟通成本,降低了运维和错误定位成本,为企业真正做到了降本增效。...所有的业务请求参数都以PB编码后放在请求体里,并和后端的gRPC体系衔接。接口除了防重试之外,不提供常规意义上的Cache。而对于静态接口,走CDN,做多级Cache。该用Get用Get。...“ 如果是你来设计公司的 API 规范,会规定所有接口都用 post 请求吗,这是为什么

1.2K30

公司规定所有接口都用 post 请求,这是为什么

最近在逛知乎的时候发现一个有趣的问题:《公司规定所有接口都用 post 请求,这是为什么?》...在19的时候接到一个项目是从零开始搭建一个微服务,当时就有了解过接口的一些规范,比如耳熟能详的Restful规范,就被应用到这个微服务项目中。...,则会缓存,如果是数据,则不会缓存 查看上面的区别,就会发现post在发送数据量大的请求时优势很显示,get则更适合获取静态资源、简单的查询等接口。...我个人在开发接口的时候也会注意,将简单的查询请求使用get方法,其他增、删、改、复杂的查询请求都可以使用post,但不会像题主的公司一样全部使用post。...对此,如果是你来设计公司的API规范,会规定所有接口都用 post 请求吗,这是为什么

2.1K30

公司规定所有接口都用 POST请求,这是为什么

最近在逛知乎的时候发现一个有趣的问题:《公司规定所有接口都用 post 请求,这是为什么?》...在19的时候接到一个项目是从零开始搭建一个微服务,当时就有了解过接口的一些规范,比如耳熟能详的Restful规范,就被应用到这个微服务项目中。...,则会缓存,如果是数据,则不会缓存 查看上面的区别,就会发现post在发送数据量大的请求时优势很显示,get则更适合获取静态资源、简单的查询等接口。...(点击下载2021年最新阿里p7面试题教程) 我个人在开发接口的时候也会注意,将简单的查询请求使用get方法,其他增、删、改、复杂的查询请求都可以使用post,但不会像题主的公司一样全部使用post。...对此,如果是你来设计公司的API规范,会规定所有接口都用 post 请求吗,这是为什么

54210

公司规定所有接口都用 POST 请求,这是为什么

最近在逛知乎的时候发现一个有趣的问题:《公司规定所有接口都用 post 请求,这是为什么?》...我个人在开发接口的时候也会注意,将简单的查询请求使用 get 方法,其他增、删、改、复杂的查询请求都可以使用 post,但不会像题主的公司一样全部使用 post。...而作为技术负责人,如果他搞出了一套接口方案(也许其中一条就是所有http接口都用post),提高了开发效率,降低了沟通成本,降低了运维和错误定位成本,为企业真正做到了降本增效。...所有的业务请求参数都以PB编码后放在请求体里,并和后端的gRPC体系衔接。接口除了防重试之外,不提供常规意义上的Cache。而对于静态接口,走CDN,做多级Cache。该用Get用Get。...“ 如果是你来设计公司的 API 规范,会规定所有接口都用 post 请求吗,这是为什么? 推荐阅读:看看人家 SpringBoot + vue后台管理系统,多么优雅...

65620

解决Spring Boot请求接口返回400错误的排查方法

在开发过程中,遇到接口返回400错误是比较常见的情况。这种错误通常表示请求的参数有问题,但有时候却没有提供具体的错误信息,给排查带来了一定的困扰。...本篇文章将介绍一种解决方法,通过实际案例展示如何排查并解决Spring Boot请求接口返回400错误。概述 在实际案例中,编写了一个新增接口/sync用于同步商品档案信息。...然而,当调用该接口时,始终返回400错误,没有提供任何具体的错误信息。初步排查 根据同事的指点,怀疑请求参数的JSON结构与实体对象的字段结构不匹配,导致无法正确转换。...通过逐个排查错误字段,我们可以找到并修复JSON结构与实体对象不匹配的问题。解决问题并优化 一旦找到了错误字段,我们应该及时修复代码,确保请求参数能够正确转换为实体对象。...throws IOException { // 同步商品档案信息 iRetailDataService.sync(req);}总结 通过以上排查方法,我们成功解决了Spring Boot请求接口返回

2.1K10

Ajax发送PUTDELETE请求出现错误的原因及解决方案

.而其他的,根据单词并不能准确的知道他们想表达的意思.本文要讲的并不是HTTP协议,主要是分析一下发送Ajax(异步请求)的时候,为什么使用GET和POST方式发送可以接收到数据,而使用DELETE和PUT...方法无法发送请求的问题出现原因,当然还是要给出解决办法的....一般情况下,我们使用Rest风格的URI时,也就是使用HTTP协议请求方式的动词,来表示对资源的操作(GET(查询),POST(新增),PUT(修改),DELETE(删除)),常常会出现这个问题....既然会出现这个令人头痛的问题,那么我们为什么还要用这种Rest风格的URI呢?...为什么出现这种情况呢? 实际上这是因为在设计Tomcat的时候就出现的问题.在Tomcat的源代码的Request.java类中,大约是3111行左右的代码,有这样的一段代码.

2.1K10

解决快递100同城配送接口请求格式错误的方法

寄件类 账号注册后商家寄件接口显示下单失败,是否可以调试?...1.商家寄件接口接口费用,充值费用为运费,在无充值情况下无法调用接口,最低充值为100元; 2.商家寄件接口下单后为预扣费用,取消订单会返回预扣费用 个人寄件接口中运力查询接口返回的“type":1和...商家寄件接口与电子面单接口的区别 1、电子面单接口,需要有合作的快递公司面单账号,运费和快递公司结算,对接接口快速回传单号进行打单。...快递100支持的同城品牌有单独的查询接口吗? 仅支持通过快递100平台下单后可以查询其物流轨迹,其他平台订单不可查询物流信息。 同城配送接口接口费用包含什么?...同城配送接口下单服务及物流查询服务,下单后即可查询物流信息。

95940
领券