>백엔드 개발 >Golang >golang 요청 리디렉션 문제(중복 오류)

golang 요청 리디렉션 문제(중복 오류)

王林
王林앞으로
2024-02-15 10:30:091241검색

golang 请求重定向问题(多余的错误)

golang을 사용하여 네트워크 요청을 할 때 가끔 요청 리디렉션 문제가 발생할 수 있습니다. 이 문제는 중복 오류로 인해 발생할 수 있습니다. PHP 편집자 Xigua가 네트워크 요청의 원활한 진행을 보장하기 위해 이 문제를 해결하는 방법을 알려줄 것입니다. 한 번 보자!

질문 내용

golang에서 매우 이상한 동작이 나타납니다.

게시물 요청으로 작업을 수행한 다음 요청을 리디렉션하고 싶습니다. 작동 여부는 무작위 요인에 따라 다릅니다.

작동하지 않으면 다음 오류가 발생합니다:

"http: 중복 응답. WriteHeader 호출..."

기능이 깊어질수록 리디렉션이 작동할 가능성이 낮아집니다.

  • 내가 아는 한 리디렉션은 한 번(또는 0번...)만 했습니다.
  • 리디렉션하기 전에 헤더를 작성하지 않습니다.
  • 리다이렉션하기 전에 작가에게 한 유일한 일은 지도에 넣는 것뿐이었습니다.

여기서 코드를 전부 복사하고 싶지는 않아서 요약하겠습니다.

핸들러는 POST 요청을 처리하고 demand라는 맵에 요청 데이터를 전달합니다.

그런 다음 요청을 구문 분석하여 양식 값을 얻고 demand에 저장합니다. 채널로 전송됩니다.

수요 그래프는 채널에서 다음 함수로 전달됩니다.

으아악

F5를 누르면 결국 올바르게 리디렉션됩니다. writer.Write([]byte("same issues")) 에 간단히 뭔가를 써보려고 했는데, 같은 문제였습니다.

저는 Linux를 사용하고 있으며 다른 브라우저를 사용해 보았습니다.

Question: 이것은 (알려진) 버그인가요?

해결책이 있나요?

(클라이언트에 강제 쓰기)

감사합니다

Solution

드디어 문제를 이해하고 해결책을 찾았습니다.
질문:

따라서 작성자 요청은 실제 처리 기능과 다른 범위 기능에서 처리되고 리디렉션됩니다. 그리고 실제핸들러 기능이 종료되면. 특정 상황적 요인으로 인해 작성자 요청이 만료됩니다. 즉, 더 이상 요청을 리디렉션하거나 응답할 수 없습니다. 문서에는 다음과 같이 나와 있습니다.

https://pkg.go.dev/net/http p>

이것이 때때로 작동하는 이유에 대한 한 가지 가능한 설명은... 어쩌면 "채널 전송, 처리 및 리디렉션"이 충분히 빠르게 (때때로) 발생하고 실제 핸들러 기능이 아직 닫히지 않았을 수 있다는 것입니다.

데이터를 처리하기 전에 핸들러 기능을 차단하면 병렬 비동기 처리의 목적이 무효화됩니다. 그래서 결국 핸들러 함수 안에 모든 것을 중첩시켰습니다.
똑똑한 사람들이 나를 바로잡거나 맥락과 ResponseWriters에 대한 더 나은 설명을 공유하는 것을 환영합니다.

위 내용은 golang 요청 리디렉션 문제(중복 오류)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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