프록시를 통한 업로드 시 바이너리 파일 바이트 유지
아티팩트를 텍스트로 디코딩해 ASCII로 다시 구성하는 대신, 프록시를 통해 업로드할 때 파일 바이트와 바이트 길이를 유지합니다.
바이너리 파일은 바이트로 HTTP 클라이언트에 도달해야 합니다. 텍스트 판독기로 읽고 결과 문자열을 ASCII로 다시 인코딩하면 프록시가 무엇이든 받기 전에 값이 바뀔 수 있습니다. 작은 텍스트 샘플이 동작한다고 해서 그 경로가 이미지, 아카이브, 문서에 안전한 것은 아닙니다.
기존 .NET 업로드 경로에서는 그 변환을 바이너리 본문 소스로 바꿉니다:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);콘텐츠를 애플리케이션의 구성된 HTTP 업로드로 전달합니다. 이 조각은 본문 소스를 설정하고, 기존 클라이언트는 여전히 메서드, 대상, 프록시, 수명 관리를 담당합니다.
이전 문자열의 문자 수에서 계산된 Content-Length는 제거합니다. 이 필드는 옥텟을 측정합니다. 문자 수를 다른 인코딩의 버퍼와 짝지우는 대신 HTTP 라이브러리가 본문 표현에서 프레이밍을 구성하도록 합니다.
의도적인 텍스트 업로드라면 인코딩을 명시적으로 선택하고 필요한 길이는 전송되는 바이트에서 도출합니다. 그 텍스트 형식 결정을 임의의 파일에 적용해서는 안 됩니다.
전송된 아티팩트를 신뢰할 수 있는 예상 값과 비교합니다. HTTP 성공은 그 계층에서 업로드 작업이 완료되었음을 확인할 뿐이며, 이전 텍스트 변환이 원래 바이트를 보존했다는 것은 보여줄 수 없습니다.