서버 사이드 렌더링 중 HttpClient가 fetch 백엔드를 사용할 때 응답 본문을 버퍼링한 바이트 수가 maxResponseBodySize 한도를 초과하면 이 오류가 발생합니다. Angular는 렌더링 중 예상보다 큰 응답을 서버에 버퍼링하지 않도록 각 응답 본문의 기본 한도를 1 MB로 제한합니다.
오류 해결하기
한도를 늘리려면 provideServerRendering 옵션에서 maxResponseBodySize를 설정하세요.
import {provideServerRendering, withRoutes} from '@angular/ssr';
import {ApplicationConfig} from '@angular/core';
import {serverRoutes} from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [
provideServerRendering(
{
maxResponseBodySize: 5 * 1024 * 1024, // 5MB
},
withRoutes(serverRoutes),
),
],
};
maxResponseBodySize는 fetch 백엔드를 사용하는 서버 측 HttpClient 요청마다 Angular가 버퍼링할 응답 본문의 최대 바이트 수를 설정합니다. 값은 바이트 단위이며 전역으로 적용됩니다.
IMPORTANT: 애플리케이션이 허용하는 범위에서 이 한도를 최대한 작게 유지하세요. 한도를 늘리면 서버 측 요청이 더 큰 응답 본문을 버퍼링할 수 있어 메모리 사용량과 서비스 거부 공격 위험이 증가합니다. 대용량 다운로드는 서버 렌더링 외부에서 처리하는 것이 좋습니다.
오류 디버깅하기
오류 메시지에는 설정한 maxResponseBodySize 한도가 바이트 단위로 표시됩니다. 어떤 HTTP 요청이 큰 응답을 반환하는지 찾으려면 네트워크 로그나 SSR 서버 콘솔에서 실패한 요청 URL을 확인하세요.
큰 응답이 클라이언트에서만 필요하고 서버 사이드 렌더링에는 필요하지 않다면 해당 요청의 전송 캐시를 비활성화할 수 있습니다.
httpClient.get('/api/large-data', {transferCache: false});