Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

curl 오류 92로 HTTP/2 스트림이 비정상 종료되나요? HTTP/1.1 강제 전 리셋을 보존하세요

종료 코드 92는 HTTP/2 프레이밍 또는 스트림 오류이지 단일 원인이 아닙니다. 정확한 리셋, 재시도 안전성, 각 경계와 완전한 응답을 차례로 확인하세요.

curl 클라이언트, 중간 계층, 원본 서버 경계를 보여 주는 원본 기술 일러스트.
원본 일러스트: 같은 오류 문자열만으로 어느 구간이 리셋을 보냈는지 알 수 없습니다. Watch at Ease

종료 코드 92는 HTTP/2 프레이밍 또는 스트림 오류이지 단일 원인이 아닙니다. 정확한 리셋, 재시도 안전성, 각 경계와 완전한 응답을 차례로 확인하세요.

92는 HTTP/2 프레이밍 계층의 스트림 오류입니다. 스트림 오류와 전체 연결 오류는 다릅니다. HTTP/1.1 성공만으로 고장 지점은 확정되지 않습니다.

재현 요청과 정확한 오류 고정

curl -V, 메서드, URL, 종료 값, 스트림 번호와 오류 이름을 기록하고 공유 전 인증·쿠키·토큰·본문을 제거합니다.

가능하면 읽기 전용 엔드포인트를 씁니다. 브라우저 성공은 협상과 경로가 달라 반증이 아닙니다.

재시도 전 부작용 분류

GET/HEAD도 결과 확인이 필요합니다. POST, PUT, PATCH, DELETE는 처리됐을 수 있으므로 로그와 멱등 키를 먼저 확인합니다.

RFC 9113의 REFUSED_STREAM 및 GOAWAY 보장과 일반 CANCEL 또는 INTERNAL_ERROR를 구분합니다.

비식별 추적으로 경계 찾기

먼저 --verbose를 쓰고 최신 curl에서는 --trace-config ids,time,http/2,ssl도 사용할 수 있습니다. 추적은 민감하므로 비공개 보관합니다.

클라이언트, 프록시, CDN, 게이트웨이와 원본 로그 시간을 맞춥니다. 오류 92만으로 리셋 발신자를 알 수 없습니다.

프로토콜만 바꿔 비교

같은 URL, 페이로드, 자격 증명과 경로에서 --http2와 --http1.1을 비교합니다. 후자 성공은 HTTP/2 의존성을 좁힐 뿐입니다.

버퍼, 분할, 네트워크와 프로토콜을 동시에 바꾸지 말고 한 변수씩 버전과 함께 기록합니다.

완전성 확인 후 제한적 완화

상태, 헤더, 바이트 또는 해시와 애플리케이션 결과를 확인합니다. 다운로드는 새 임시 이름에 씁니다.

안전성, 완전성, 범위와 기한이 모두 확인될 때만 HTTP/1.1을 임시 완화로 쓰고 부작용이 불명확하면 중지합니다.

재시도 안전성, 통제된 비교, 출력 검증을 보여 주는 원본 기술 일러스트.
원본 기술 일러스트: 부작용을 분류한 뒤 재시도하고 완전한 출력을 검증합니다. Watch at Ease