1

내 ASP.NET 응용 프로그램은 사용자에게 JSON 개체를 반환하며 이진 인코딩 된 데이터를 포함합니다. 이로 인해 나는 HTTP 압축을 가능하게하고 Content-Length로 시작된 문제를 결정했다.콘텐츠 길이 및 httpCompression 딜레마

압축을 사용하면 Content-Length 헤더가 무시되고 응답이 전송되고 연결이 즉시 닫히지 않습니다. 모든 데이터가 전송 된 후 약 15 초 동안 연결이 계속 열립니다.

HTTP 압축을 사용하고 싶지만 Content-Length 헤더로 문제를 해결하는 방법을 모르겠습니다.

context.Response.AddHeader("Content-Length", jsonObject.ToString().Length.ToString()); 
context.Response.Write(jsonObject); 
context.Response.Flush(); 
context.Response.Close(); 
+0

여기에 무슨 문제가 있습니까? 우리가 무엇을 도울 것인지 명확히 설명하십시오. –

+0

잠시 동안 연결이 열려 있다는 것 외에 어떤 문제가 있습니까? – jgauffin

+0

데이터를 전송 한 후 약 15 초 동안 연결이 닫히지 않는 것이 문제입니다. 이 코드는 온라인 API에서 사용되며 연결이 닫히지 않으면 클라이언트는 계속 연결 상태를 유지합니다. Content-Length를 추가하면 모든 것이 정상적으로 작동하고 데이터가 전송 된 후에도 연결이 닫힙니다. 불행히도 Content-Length는 HTTP 압축에서 무시됩니다. 콘텐츠 길이 및 HTTP 압축을 갖는 방법? – Tomas

답변

2

Content-Length은 압축 된 바이트 인 경우 전송할 데이터의 길이를 나타냅니다. 관련 질문에 대한 답변을 참조하십시오. content-length when using http compression

HTTP 압축이 웹 서버를 통해 이루어지며 (코드가 아닌 경우), 본인이 직접 콘텐츠 길이 헤더를 추가하도록 제안합니다. 잘하면, 웹 서버가 올바르게 추가됩니다.

http://httpd.apache.org/에서 Chrome을 사용하면 개발자 콘솔을 보면 Content-Length이 압축되지 않은 실제 페이지보다 훨씬 작음을 알 수 있습니다.