2013-06-20 5 views
6

청크 분할 전송 인코딩 형식의 클라이언트에 대용량 데이터를 보내고 있습니다.청크 분할 전송 인코딩으로 전송 된 응답 및 일부 데이터가 이미 전송 된 후 오류가 발생했음을 나타냅니다.

답변 작성 중 중간에 발생하는 오류를 어떻게 처리해야합니까?

클라이언트가 실제로 응답이 성공하지 못했지만 서버가 어떤 문제에 부딪쳤다는 것을 알기 위해 HTTP Spec 권장 관행이 있는지 알고 싶습니다.

답변

5

HTTP 헤더를 클라이언트에 보내기 시작하면 다른 것을 보낼 수 없습니다. 청크 데이터와 관련 머리글과 같은 보내려는 응답을 보내면 마쳐야합니다. 오류가 중간에 발생하면 오류를 클라이언트에보고 할 수 없습니다. 연결을 끊으면됩니다. 클라이언트가 모든 헤더를 수신하지 않거나 응답의 끝에 0 길이 청크를 수신하지 못합니다. 어떤 방법을 사용하든 클라이언트가 서버가 전송 중 오류가 발생했음을 알면 충분합니다.

+0

감사합니다. 예 ... 맞습니다. 헤더가 먼저 전송되고 일단 스트림에 쓰기 시작하면 헤더를 수정하는 방법이 없다는 것을 알고 있습니다. 당신이 제안했듯이, 나는 현재 연결을 닫는다. 그러나 HTTP Spec이 클라이언트에게 어떻게 알릴 수 있는지에 대해 말하는 다른 방법이 있는지 알고 싶다. 재미있는 0 길이 청크는 내가 그 영역에서 뭔가를 할 수 있는지를 확인합니다. –

+0

고객에게 무언가 잘못되었음을 알리는 방법에는 두 가지가 있습니다. 마지막 0 길이 청크를받는 것 외에는 오류가 있거나 다른 마지막 청크를 보낸 후 청취 한 꼬리말에 사용자 정의 HTTP 헤더를 넣는 등의 이유로 연결을 닫습니다. 대부분의 클라이언트는 그러한 헤더를 무시할 가능성이 높지만 자신의 클라이언트를 작성하는 경우 해당 헤더를 찾을 수 있습니다. –

+0

물론 .. 감사합니다! 레미 ... –