보안 헤더를 기반으로 요청을 거부 할 수있는 노드 서버가 있습니다. 요청을 거절하면 빈 데이터와 끝 핸들러를 사용하여 요청 본문을 읽어야합니까, 아니면 그냥 401이라는 응답을 보내고 요청을 읽지 않은 상태로 둘 수 있습니까?노드에서받은 http 요청에 대해 end()를 호출해야합니까?
응답을 읽지 않은 채로두면 클라이언트에서 "기존 연결이 원격 호스트에 의해 강제로 닫혔습니다."라는 오류가 발생하는 것 같습니다. 요청 본문이 읽힐 때까지 기다리는 코드를 추가하면 문제를 해결할 수 있지만 서버 코드의 여러 지점에서 지연을 추가하면 유리한 효과가있는 것으로 보입니다. 간헐적 인 결함으로 알기가 어려울 수 있습니다.
문제를 해결하기 위해 보인다 있다는 커피 스크립트 코드는 다음과 같습니다
@res.writeHead status, message, @headers
@req.on 'data', (d) ->
# wait for request to be completely read before ending response stream
@req.on 'end', => @res.end()
빈 데이터 핸들러는 종료 이벤트를 얻기 위해 필요하며 종료 이벤트는 아마도는 상기 오류를 방지하는 데 필요한 입니다 고객. 요청 본문이 메가 바이트 일 수 있다는 점을 감안할 때 이것이 401 응답을 보내는 가장 좋은 방법인지 또는 전체 요청을 읽지 않아도되는 더 좋은 방법입니다.
그냥 401을 보낼 수 있습니다. Res.send 호출 res.end – Sami