quark-h5 icon indicating copy to clipboard operation
quark-h5 copied to clipboard

并发请求,返回值错乱!

Open guyang66 opened this issue 2 years ago • 1 comments

截屏2022-06-21 上午9 15 38 截屏2022-06-21 上午9 21 22 注意到上面两个中间件,假设分别为中间件a和中间件b 注意到ctx是从app中获取,当同一时间有多个请求进入,app是个单例,this.ctx = ctx会被让app.ctx被覆盖掉,后面再使用app.ctx可能是上一个客户端的信息。 举例:

用户A -> 发请求 -> 进入中间件a(用户a) ->进入中间件b(用户a)

用户B -> 发请求 -> 进入中间件a(用户b) ->进入中间件b(用户b)

在同一时间的并发下最终的结果可能是:

用户A、用户B同时发请求->进入中间a(用户a)->进入中间a(用户b)(这里app.ctx被覆盖)->进入中间件b(用户a)(此时从app.ctx已经是用户b的请求信息,比如app.ctx.cookies已经变成b用户的cookie了,造出处理混乱,返回值错乱)->进入中间b(用户b)(b用户的返回值是正确的)

因为我在您的项目上面改动一些东西,出现了这个bug,可能您的项目暂时没有这个bug,但是这可能是一个风险点,我觉得可以注意一下。 联系方式:wx:gy668991

guyang66 avatar Jun 21 '22 01:06 guyang66

好像是有这个bug 有什么解决方案么

huangwei9527 avatar Aug 04 '22 09:08 huangwei9527