2017-05-16 14 views
0

문제를 해결하려고합니다. http 응답 헤더 : Transfer-Encoding: chunked(spring-boot, cxf, tomcat) Content-Length와 Transfer-Encoding : chunked?

우리는 spring-boot + embedded-tomcat에 CXF-SOAP 웹 서비스를 가지고 있습니다.

SOAP 응답은 Content-Length 헤더를 가지며 Transfer-Encoding .... 은 정상적인 것 같지 않습니까?

불행히도 및 Content-Length으로 만 작동하는 일부 클라이언트 해킹 인 이 있습니다.

강제로 서버 응용 프로그램이 Transfer-Encoding: chunked으로 응답 할 수 있습니까?

어떤 응답 형식이 생성되는지 정확히 결정합니까?

어떻게 든 구성 할 수 있습니까?

답변

1

응답시 BufferSize를 설정하십시오.

response.setBufferSize()는 응답 크기의 Content-Length 헤더를 설정합니다. 응답 크기가 bufferSize를 초과하면 Transfer-Encoding : Chunked로 대체됩니다. 버퍼 크기는 적절한 값으로 설정되어야합니다. 이 값을 더 높은 값으로 설정하면 플러시하기 전에 모든 응답을 메모리에 버퍼링합니다. 따라서 값은 낙관적 인 크기로 설정되어야합니다. 기본 톰캣 버퍼 크기에 의해

가 8K

다른 옵션으로 설정됩니다 당신은 당신이 서비스를 위해 당신이 원하는 설정 헤더에 응답 필터를 추가 할 수 있습니다.

1

요청 http 헤더에 따라 서버 앱이 응답하지만 원하는대로 응답합니다.

요청 HTTP 헤더가 포함되어있는 경우 :

Accept-Encoding: chunked 

chunked, 서버 응용 프로그램은 헤더와 내용 Transfer-Encoding: chunked로 응답합니다.

클라이언트 기능을 나타내는 올바른 http 요청을 만들 수 없으면 Accept-Encoding: chunked 헤더를 변경하거나 추가하여 요청을 수정하는 역방향 프록시를 추가 할 수 있습니다.