Wildfly中奇怪的请求/响应正文?

时间:2018-12-13 13:38:55

标签: java spring-mvc nginx wildfly

我在Wildfly中运行的应用中遇到了涉及请求/响应主体的怪异问题。在我看来,某个地方的缓冲区正在被服务于不同请求的多个线程共享。

应该是从我的应用程序来的JSON的请求正文的示例:

{TTP/1.0 200 OK
Expires: 0
Cache-Control: max-age=7200
X-Powered-By: Undertow/1
Server: WildFly/10
X-XSS-Protection: 1; mode=block
Pragma: 
X-Frame-Options: DENY
Accept-Ranges: bytes
Date: Fri, 07 Dec 2018 06:32:15 GMT
Connection: close
Last-Modified: Fri, 30 Nov 2018 17:08:34 GMT
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 570
Content-Type: text/html; charset=UTF-8

"-","appliedMethods":[{"uuid":"ebe163d3-c14c-4664-96a1-de8be17d462b","method":{"guid":"631e552a-e86e-44dc-8f2f-14e5b9bafa63", ... normal JSON continues

如您所见,主体以正常的{字符开头,但随后又被另一个服务于text/html的请求中的原始响应所覆盖。

>

响应也会发生同样的事情。不幸的是,我没有记录响应,所以我只有一张图像:

Weird response body

响应正文被不同的响应部分覆盖,只是这次第一个字符也被替换了。

我的堆栈是:

  • 客户端-angularjs 1.6.6
  • Nginx-nginx-plus-r14-p1(1.13.7)
  • Wildfly-10.1.0.Final
  • 春季-4.2.4。发布

我有其他意见

  • 我只能用请求来衡量案件,但是这个问题的出现率却非常低:我目前记录的37 806 125消息中有57例。
  • angularjs似乎不会造成这种情况,因为:
    1. 我在1.4中遇到了同样的问题。
    2. 我可以确定,当请求被覆盖时,被覆盖的那一部分属于另一个客户端的请求。由于此客户端无法获得此数据,因此必须在线下进行。

据我所知,我的应用程序中没有任何可导致此类行为的“异常代码”。

我所拥有的唯一超出标准@Controller范围的东西是一个RequestWrapper,它可以缓存请求主体以进行日志记录。它与org.springframework.web.util.ContentCachingRequestWrapper完全相同,并且肯定无法访问响应。

P.S。看来this question大约是同一问题。

更新:Nginx日志证明了来自客户端的请求正常。

0 个答案:

没有答案