最近项目中一直会出现一个比较奇怪的现象:偶尔有用户会重复触发某个接口,但是埋点记录能确定在前端的代码里只发起了一次,前端也没重试的机制。从用户的UA
以及环境找不到共同点,在网上搜了下说有可能是nginx
的重试机制
https://www.cnblogs.com/caibaotimes/p/15407971.html
我们的项目都是走公司统一的结构、构建以及发布(react
)所以我想问下
1、怎么确定该项目是否走了nginx
代理?
2、如果上面的原因真是nginx
重试导致的,怎么排查?
感谢~
简单分析下
博客
说的场景是集群部署,说的是因为 nginx
的重试机制导致一个请求
打在了两台
服务器上。network
中确认过没,是不是确实只有一次?有可能是浏览器的重试机制,也有可能是nginx的重试机制。
排查就是就是每一层加个唯一id。
比如说前端发起的时候加个 uuid: Math.random()
,这样就可以判断是谁发起了多次。
当然也得关注是不是触发了 option 预检请求,出现在跨域时
如果上述你都已经查完了,接下来就是看日志了。比如说 nginx 的 access_log 加上 grep 过滤去找。
也可以试着修改 Nginx 的重试机制。在 Nginx 配置中找到相关的配置项,可能是 proxy_next_upstream 或 proxy_retry 相关的配置。
或许这个是你想要的?
https://stackoverflow.com/questions/15155014/inconsistent-browser-retry-behaviour-for-timed-out-post-requests
更多相关的内容:https://stackoverflow.com/search?q=chrome+request+retry&s=f8018be9-1a56-4af7-9f42-7125dbc6744e&s=db4e609e-9b53-40d0-a2da-18edeb0d50cb
我正在我的本地主机上构建Web应用程序。 前端是Reactjs框架,运行在LocalHost:3000中
一个简单的页面: app\fetch-demo\page.js 浏览器控制台返回两次同样的结果: 为什么会这样?
html请求代码是这样的,用post请求,键的名字叫name controller的代码是这样的,因为是传json,我有加@RequestBody 实体类的代码,也是取name,getter setter也有实现
问题内容: 我们有一个node.js服务器,该服务器将REST API实施为中央服务器的代理,而中央服务器具有一个略有不同且不对称的REST API。 我们的客户端运行在各种浏览器中,它要求节点服务器从中央服务器获取任务。节点服务器从中央服务器获取所有任务ID的列表,并将其返回给客户端。然后,客户端通过代理对每个ID进行两次REST API调用。 据我所知,这些工作都是异步完成的。在控制台日志中,
问题如题: 后端提供了一个接口地址是用来查询用户信息的,用管理员账号进入菜单则没有任何问题,但是换一个普通用户则请求都发不出去。 1.发送请求的截图 2.请求不通那个账号的请求截图 排查方式: 1.通过postman请求nginx,设置不同token,管理员token正常返回,普通用户token,则长时间等待后,返回nginx的404页面。 2.通过postman请求后端gateway网关应用,使