2014-11-16 2 views
3

내 이동 서버가 요청을 처리 중입니다. 내 응답의 상태 코드를 설정하기 위해 먼저 response.WriteHeader()을 호출합니다. 그런 다음 응답 본문에 바이트를 작성하기 시작합니다. 난 바이트를 복사하고있어 동안 브라우저가 요청을 취소하는 경우, 오류가 발생합니다 :복수 응답. 진행중인 헤드 헤드 호출

write tcp [::1]:52319: broken pipe 

내 코드는 다음,이 오류를 감지 http.Error()를 호출합니다. 이 경우 response.WriteHeader()이 다시 호출됩니다.

이것은 문제가 될 수 있지만 확실하지 않습니다. 피할 수 있습니까? 응답 본문에 쓰는 동안 오류가 발생하면 response.WriteHeader()을 다시 호출하지 않으려면 어떻게해야합니까?

감사합니다.

+8

클라이언트가 이미 연결이 끊어진 경우 오류로 응답하려고 시도 할 필요가 없습니다. – Arjan

+0

@Arjan -이 시나리오를 처리하는 적절한 방법은 무엇입니까? – Jordan

+1

http://stackoverflow.com/questions/11003692/filter-out-broken-pipe-errors – thwd

답변

3

.WriteHeader()을 호출하면 네트워크를 통해 클라이언트에 응답이 전송되기 시작합니다. 응답이 진행되면 되돌릴 방법이 없습니다. 당신이 할 수있는 유일한 일은 에러를 로컬에서 기록하는 것 (서버 관리자에게 알려주는 것)이거나 자동으로 실패하는 것입니다.

'Error()'기능은 완전한 HTTP (오류) 응답을 보내는 데 사용되므로이 기능 만 사용하여 자신의 응답을 보내고 대신 사용할 수 있습니다.