Java 调用REST URI时获取HTTP 431错误-间歇性

Java 调用REST URI时获取HTTP 431错误-间歇性,java,rest,http,jetty,Java,Rest,Http,Jetty,当从浏览器调用运行在AWS上的服务器时,在Jetty服务器上,我发现以下错误 Request URL: https://test.apps.xxx.com/api/someURI Request Method: POST Status Code: 431 431 Remote Address: XXX:443 Referrer Policy: no-referrer-when-downgrade Connection: keep-alive Content-Length: 0 Date: Thu

当从浏览器调用运行在AWS上的服务器时,在Jetty服务器上,我发现以下错误

Request URL: https://test.apps.xxx.com/api/someURI
Request Method: POST
Status Code: 431 431
Remote Address: XXX:443
Referrer Policy: no-referrer-when-downgrade
Connection: keep-alive
Content-Length: 0
Date: Thu, 19 Mar 2020 05:09:59 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
l5d-success-class: 1.0
Server: nginx/1.15.5
Set-Cookie: TFCTESTSID=XXX
Sprox-Request-Id: LQJE78gYarKOiS4CUJed
Via: 1.1 linkerd, 1.1 linkerd
Via: 1.1 test.apps.xxx.com
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Connection: keep-alive
Content-Length: 498
content-Type: application/json
Cookie: s_vi=XXX
Host: test.apps.xxx.com
Origin: https://test.apps.xxx.com
Referer: https://test.apps.xxx.com/apps/xxx/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
{,…}
XXX: "XXX"
species: "human"
primaryEditType: "TagN"
primaryEditSite: 154
primaryEditSequence: ""
primaryReplacementStringLength: 0
secondaryReplacementStringLength: 0
numberOfEdits: 1
同一服务器的相同负载在一分钟后工作。对于负载非常小的其他API调用,我也看到了这个错误

通过谷歌搜索,我发现这是因为“标题字段太大”。这并不能解释为什么它会在一分钟后工作

为什么我们会看到这种断断续续的行为

后端服务器:在Jetty上运行

使用HTML和Javascript从浏览器进行调用


浏览器:Chrome(不过还没有在其他浏览器上测试过)

服务器日志中是否有任何警告?与正常工作的请求相比,得到431响应的请求的总头大小是多少?您可以通过Jetty HttpConfiguration检查或修改最大HTTP头大小,但是,将其增加到8k以上(这似乎是标准值)可能不是最好的解决方案。我看到的唯一日志是-------------------------------------------------------------------------------------------------------------------------------------------------2020-03-24 02:07:17.834+0000[qtp1900164709-12]WARN[HttpParser]解析错误的HTTP:431用于HttpChannelOverHttp@73539ba7{r=1,c=false,a=IDLE,uri=null}------------------------------------------------------------------------------------------------------------------------相同的请求在接下来的几秒钟内工作。所以我没有测试标题的大小。你使用的是什么版本的Jetty?该日志看起来像是来自旧版本,如果您不使用它,您可能应该升级到9.4。然后,您可以比较服务器端没有给出431的请求和给出431的请求,看看有什么区别。您在服务器日志中是否收到任何警告?与正常工作的请求相比,得到431响应的请求的总头大小是多少?您可以通过Jetty HttpConfiguration检查或修改最大HTTP头大小,但是,将其增加到8k以上(这似乎是标准值)可能不是最好的解决方案。我看到的唯一日志是-------------------------------------------------------------------------------------------------------------------------------------------------2020-03-24 02:07:17.834+0000[qtp1900164709-12]WARN[HttpParser]解析错误的HTTP:431用于HttpChannelOverHttp@73539ba7{r=1,c=false,a=IDLE,uri=null}------------------------------------------------------------------------------------------------------------------------相同的请求在接下来的几秒钟内工作。所以我没有测试标题的大小。你使用的是什么版本的Jetty?该日志看起来像是来自旧版本,如果您不使用它,您可能应该升级到9.4。然后,您可以比较服务器端没有给出431的请求和给出431的请求,看看有什么区别。