A客户端获取了B客户端的响应数据

两个浏览器客户端登录同一个用户,两个客户端获取了同一个客户端的响应数据。A正常访问,B传入错误参数,结果A,B均获取了传参错误的异常信息。
后台引用了线程池异步处理接口传入的参数(接口参数分成两部分调用两个线程异步处理后汇总future返回值),没有使用全局变量,没有使用threadlocal。自测排除了线程安全的问题(开启了三个定时任务,每五秒同时调该接口,使用同一个用户的token信息,接口传参不一致,响应结果有明显差异,测试结果通每个定时任务预设结果均对应)。

你把变量定义成静态了是吗,否则不可能这样啊

参考CHATGPT和自己的理解回答,希望能帮到你.
这种情况可能是由于后端服务器返回的响应数据中包含了异常信息,而这个异常信息并没有被正确地处理和判断,导致错误信息被返回给了客户端。

针对这种情况,可以在后端代码中对异常信息进行处理,使得在异常情况下返回给客户端的响应数据中不包含具体的异常信息。具体可以采用以下方式:

  1. 合理使用HTTP状态码

在后端代码中,可以根据具体的异常情况,返回不同的HTTP状态码。例如,在B客户端传入错误参数的情况下,可以返回400 Bad Request状态码,而在A客户端正常访问的情况下,可以返回200 OK状态码。通过合理使用HTTP状态码,可以使得前端可以根据状态码判断响应是否出错,而不必获取异常信息。

  1. 将异常信息记录到日志中

在后端代码中,可以将异常信息记录到日志文件中。在出现异常的情况下,不返回异常信息,而是返回固定的错误响应,比如“系统异常,请稍后重试”等提示信息。同时,将具体的异常信息记录到日志文件中,以方便后续排查问题。

  1. 对返回的响应数据进行统一的处理

在后端代码中,可以对返回的响应数据进行统一的处理,尽可能地将异常信息隐藏起来。例如,可以定义一个统一的响应数据格式,将异常信息放到一个特定的字段中。这样,前端在处理响应数据时,只需要判断该特定字段是否有值即可判断响应是否出错。

综上所述,针对两个浏览器客户端登录同一个用户,两个客户端获取了同一个客户端的响应数据,但其中一个传入了错误参数导致A、B均获取了传参错误的异常信息的情况,可以通过合理使用HTTP状态码、将异常信息记录到日志中以及对返回的响应数据进行统一的处理等方式进行处理。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7496036
  • 这篇博客也不错, 你可以看下1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B说我也知道了,请你猜猜这两个数的和是多少
  • 除此之外, 这篇博客: 计算机网络:(终章)4万字长文,总复习中的 🌞【A、B卷选择必考】#3、常见网络应用的端口号 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 端口号为两个字节(16位),范围为0——65535(即 216-1),其中**0——1023(210-1)**为公认的保留使用的端口,具有固定的服务进程1024——65535为用户可以使用的端口号。

    【所以,一个端口可以对应多个进程(X),我们是利用端口来区分进程的】

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zO1z8mp1-1626832529430)(C:\Users\Zeker62\AppData\Roaming\Typora\typora-user-images\image-20210703160014462.png)]

    以下是常用端口号(参见C:\Windows\System32\drivers\etc\services):

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QMOH8v1S-1626832529430)(C:\Users\Zeker62\AppData\Roaming\Typora\typora-user-images\image-20210703155733909.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVBY4zOt-1626832529431)(C:\Users\Zeker62\AppData\Roaming\Typora\typora-user-images\image-20210703155816093.png)]

猜测可能是A,B浏览器登陆同一个账号请求的session一致?