>  기사  >  백엔드 개발  >  Go에서 "http: 쓰기가 선언된 Content-Length를 초과합니다." 오류

Go에서 "http: 쓰기가 선언된 Content-Length를 초과합니다." 오류

WBOY
WBOY앞으로
2024-02-09 12:50:07677검색

Go 中的“http:写入超过声明的 Content-Length”错误

PHP 편집자 Xinyi는 오늘 여러분에게 Go 언어에서 발생하는 일반적인 오류, 즉 "http: writing이 선언된 Content-Length를 초과합니다"라는 오류를 소개할 것입니다. Go 언어를 사용하여 HTTP 요청을 작성할 때 가끔 이 오류가 발생합니다. 이 오류가 발생하는 이유는 요청 헤더에 선언한 Content-Length가 실제로 보낸 요청 본문의 길이와 일치하지 않기 때문입니다. 다음으로 이러한 오류가 발생하는 이유와 해결 방법에 대해 자세히 설명하겠습니다.

질문 내용

저는 Go를 실험 중이며 작업자 코루틴에서 처리하는 HTTP 요청 대기열을 관리하는 애플리케이션을 작성했습니다.

동시성 작업이 제대로 작동하는 것 같지만 다시 보낸 후 http 响应时出现此错误:写入的内容超过声明的 Content-Length.

전체 코드는 다음과 같습니다.

으아악

이 문제를 해결하는 방법을 아시나요? 또한 저는 동시성에 대해 매우 초보이기 때문에 개선될 수 있다고 생각하시나요? 감사해요!

해결 방법

http.Handler 문서에 따르면:

당신의 handler 正在将请求/编写器推送到队列中,然后返回。这意味着您在处理程序返回后尝试写入 ResponseWriter ,违反了上述规定(由于没有同步,写入也可能实际发生在 return 이전 또는 동시에).

이 문제를 해결하는 방법은 다양합니다.

으아악

요구 사항에 따라 다릅니다. 일반적인 해결책은 채널만 사용하는 것입니다(핸들러는 요청을 채널에 보내고 여러 작업자는 동일한 채널에서 수신합니다).

위 내용은 Go에서 "http: 쓰기가 선언된 Content-Length를 초과합니다." 오류의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제