2017-04-19 59 views
0

我正在使用 org.apache.http.impl.client.CloseableHttpClient 发送请求。每当标题之一的尺寸较大(约103452字节),我得到一个:java.net.SocketException:连接重置,大型HTTP标头

java.net.SocketException异常:连接复位

的连接可能不被重置服务器,因为其他客户端来自其他Java应用程序(可能使用spring OAUTH/REST客户端)似乎能够在发送类似大型标题的同时使用该服务。

即使正确的解决方法是为了避免首先发送这样一个大头的需要,有没有配置org.apache.http.impl.client.CloseableHttpClient,可以防止它在大头上崩溃?

客户端内置有:

HttpClientBuilder.create().useSystemProperties().build() 
+0

你有多确定服务器是否拒绝请求? HTTP规范没有规定限制,我不相信Apache客户端强加一个默认配置。但是,网络服务器呢...有关详细信息,请参阅https://stackoverflow.com/questions/686217/maximum-on-http-header-values。请注意,Web服务器强加的限制是所有标题的组合大小,而不是单个标题。 – Alex

+0

好点。我会确认 – erjoalgo

+0

您能否将您的评论添加为答案?我尝试将请求发送到本地服务器:'sudo nc -l 80'。带有100Kb头的请求被apache http客户端发送得非常好。同时,我尝试通过'curl'客户端向真实服务器发送同样的请求,并且我得到了一个'curl:(56)Proxy CONNECT aborted''。所以即使代理可能会拒绝这么大的头部大小。 – erjoalgo

回答

0

如何确保你的服务器没有拒绝请求?

HTTP规范没有强加限制,我不相信Apache客户端强加一个默认配置。

但是,网络服务器的确...请参阅Maximum on http header values?了解一些详细信息。请注意,Web服务器强加的限制是所有标题的组合大小,而不是单个标题。

相关问题