Alt-SvcAlt-Svc(Alternative Services)는 현재 응답을 준 서버가 '같은 콘텐츠를 다른 프로토콜·엔드포인트로도 제공한다'고 클라이언트에 광고하는 응답 헤더입니다. HTTP/3(QUIC) 활성화의 표준 경로입니다.
값은 `프로토콜="호스트:포트"; ma=유효기간` 형태이며, 대표적으로 `Alt-Svc: h3=":443"; ma=86400`처럼 HTTP/3 지원을 알립니다.
브라우저는 대개 HTTP/1.1 또는 HTTP/2로 첫 연결을 맺는데, 이때 서버가 Alt-Svc로 `h3`를 광고하면 클라이언트는 다음(또는 병행) 연결부터 같은 오리진에 대해 HTTP/3(QUIC over UDP)로 접속을 시도합니다. 즉 HTTP/3는 별도 DNS 레코드 없이도 이 헤더를 통해 부트스트랩됩니다(HTTPS/SVCB DNS 레코드는 더 이른 시점의 대안).
`ma`(max-age)는 이 광고를 얼마나 오래 신뢰·캐시할지 정하고, `persist=1`은 네트워크 전환 후에도 유지할지를 지정합니다. 여러 대안을 쉼표로 나열할 수 있으며, 특수 값 `Alt-Svc: clear`는 이전에 광고한 모든 대체 서비스를 즉시 폐기시킵니다(문제 있는 h3 롤백 시 유용).
핵심 효과는 성능입니다. HTTP/3는 QUIC 기반으로 연결 수립이 빠르고(0-RTT/1-RTT) 헤드 오브 라인 블로킹을 완화하므로, Alt-Svc로 이를 안내하면 재방문·후속 요청의 지연이 줄어듭니다. 다만 클라이언트가 광고된 대체 서비스로 접속했음을 서버가 알 수 있도록 요청에 Alt-Used 헤더를 실을 수 있어, 라우팅·검증에 활용됩니다.
Alt-Svc: <protocol-id>="<host>:<port>"; ma=<seconds>[; persist=1] | cleare.g. Alt-Svc: h3=":443"; ma=86400
<protocol-id>="<host>:<port>" | 대체 서비스가 사용하는 프로토콜과 위치. `h3`(HTTP/3), `h2`(HTTP/2) 등. host 생략(빈 값)은 같은 호스트를 의미. |
ma=<seconds> | max-age. 이 대체 서비스 정보를 캐시·신뢰할 수 있는 유효 기간(초). |
persist=1 | 네트워크 변경 후에도 이 정보를 유지할지 여부. |
clear | 이전에 광고한 모든 대체 서비스를 무효화. |