2017-04-19 4 views
0

나는 org.apache.http.impl.client.CloseableHttpClient 을 사용하고 있습니다. 다른 클라이언트 때문에, 연결java.net.SocketException : 연결 재설정, 대형 HTTP 헤더

연결이 아마 서버에 의해 초기화되지 않는 재설정 :

java.net.SocketException의이 : 헤더 중 하나의 크기가 큰 (103452 주위 바이트) 때마다, 나는 얻을 다른 Java 응용 프로그램 (아마도 봄 OAuth/REST 클라이언트 사용)에서 비슷한 머리글을 보내는 동안 서비스를 사용할 수있는 것으로 보입니다.

큰 머리글을 보낼 필요가 없도록하는 것이 적절한 경우에도 큰 머리글에서 충돌하지 않도록 org.apache.http.impl.client.CloseableHttpClient의 구성이 있습니까?

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

서버가 요청을 거부하지 않았습니까? HTTP 스펙은 제한을 두지 않으며 아파치 클라이언트가 기본 설정에서이를 부과한다고 생각하지 않는다. 그러나 웹 서버는 ... 자세한 내용은 https://stackoverflow.com/questions/686217/maximum-on-http-header-values를 참조하십시오. 웹 서버가 부과하는 제한은 단일 헤더가 아닌 모든 헤더의 결합 된 크기에 대한 것입니다. – Alex

+0

좋은 지적. 내가 확인하겠습니다 – erjoalgo

+0

답변으로 의견을 추가해주세요. 나는 로컬 서버에 요청을 보냈다 :'sudo nc -l 80'. 100Kb 헤더가있는 요청은 apache http 클라이언트가 완벽하게 보냈습니다. 동시에 curl 클라이언트를 통해 실제 서버에 동일한 요청을 보내려고했지만'curl : (56) Proxy CONNECT aborted'가 발생했습니다. 따라서 프록시조차도 큰 헤더 크기를 거부 할 수 있습니다. – erjoalgo

답변

0

어떻게 당신이 서버가 요청을 거부하지 않는됩니다

클라이언트가 함께 내장되어?

HTTP 사양에는 제한이 없으며 Apache 클라이언트가 기본 구성에 HTTP 클라이언트를 부과한다고 생각하지 않습니다.

그러나 웹 서버는 ... 자세한 내용은 Maximum on http header values?을 참조하십시오. 웹 서버가 부과하는 제한은 단일 헤더가 아닌 모든 헤더의 결합 된 크기에 대한 것입니다.

관련 문제