# HTTP/2

> macOS용 Proxyman에서 HTTP/2를 켜고 HTTP/2 트래픽을 캡처해 요청, 응답, 트레일러, 협상된 프로토콜을 확인합니다.

## 1. 기능 소개 {#1-whats-it}

HTTP/2에서는 여러 요청이 하나의 연결을 동시에 공유할 수 있습니다. Proxyman은 각 요청과 응답을 별도의 교환 단위로 캡처하므로, 익숙한 미리보기 도구와 디버깅 도구로 확인할 수 있습니다.

> **노트:** HTTP/2는 Proxyman macOS v26.0.0부터 일반 릴리스에 포함됩니다. 기본적으로 꺼져 있습니다. 더 이상 별도의 베타 앱이 필요하지 않습니다.

## 2. 장점 {#2-benefits}

* Proxyman을 사용하는 앱과 브라우저의 HTTP/2 요청과 응답을 확인합니다.
* 공유 연결에서 동시에 진행되는 요청을 추적합니다.
* 헤더, 본문, 본문 뒤에 전송되는 트레일러 헤더를 읽습니다.
* 캡처한 요청이 사용한 HTTP 버전을 확인합니다.
* 기록된 경우 [Connection Log](https://proxyman.com/docs/ko/basic-features/connection-log)에서 업스트림 프로토콜을 확인합니다.

HTTP/2는 헤더 압축과 연결 재사용으로 오버헤드를 줄입니다. 효과는 앱, 서버, 네트워크에 따라 다릅니다. 이 기능을 켠다고 모든 요청이 빨라지지는 않습니다.

## 3. 활성화 방법 {#3-how-to-enable-it}

1. Mac에서 Proxyman v26.0.0 이상을 엽니다.
2. **Proxyman → Settings → General**로 이동합니다.
3. **Proxy** 섹션에서 **Use HTTP/2**를 켭니다.
4. HTTPS 콘텐츠의 경우, 클라이언트 기기에 Proxyman 인증서를 설치하고 신뢰하도록 설정합니다.
5. 앱 또는 도메인에 대해 [SSL Proxying](https://proxyman.com/docs/ko/basic-features/ssl-proxying)을 켭니다.
6. 새 요청을 보내거나 페이지를 새로고침합니다.

![포트 번호와 기록 옵션 아래에 Use HTTP/2가 체크되어 있는 Proxyman Settings General 탭](https://proxyman.com/docs/assets/proxyman-settings-use-http2.jpg)

_Use HTTP/2 켜기_

> **경고:** 이 설정을 변경하면 기존 연결이 닫힙니다. 이후 새 요청을 보냅니다. 활성 상태의 WebSocket 및 Server-Sent Events 연결도 다시 연결해야 할 수 있습니다.

인증서 설정은 [macOS 가이드](https://proxyman.com/docs/ko/debug-devices/macos)를 참고합니다. 원격 기기는 인증서를 신뢰하고 트래픽을 Mac의 Proxyman을 통해 보내야 합니다. [iOS](https://proxyman.com/docs/ko/debug-devices/ios-device) 또는 [Android](https://proxyman.com/docs/ko/debug-devices/android-device) 설정 가이드를 참고합니다.

HTTP/2를 끄려면 같은 Settings 섹션에서 **Use HTTP/2** 체크를 해제합니다.

스크립트에서는 `proxyman-cli http-version status` 또는 `proxyman-cli http-version set prefer_http2`를 사용할 수 있습니다. 문법과 JSON 출력 형식은 [HTTP version 명령줄 가이드](https://proxyman.com/docs/ko/command-line#15-http-version)에서 확인할 수 있습니다.

## 4. 캡처되는 항목 {#4-what-does-it-capture}

메인 목록에서 요청을 선택하면 사용 가능한 세부 정보를 확인할 수 있습니다:

* 요청 메서드, URL, 쿼리 파라미터, 쿠키, 헤더
* 요청 및 응답 본문(JSON, 폼 데이터, 텍스트, 바이너리 콘텐츠 등)
* 응답 상태와 헤더
* 요청 및 응답 트레일러(있는 경우)
* 타이밍 및 HTTP 버전 정보
* 기록된 연결 세부 정보(업스트림 프로토콜 협상 포함)

트레일러는 본문 뒤에 전송되는 헤더입니다. gRPC 트래픽이라면 헤더 또는 트레일러에서 `grpc-status`와 `grpc-message`를 확인합니다. HTTP 200만으로는 RPC가 성공했다고 증명할 수 없습니다. 바이너리 페이로드는 추가로 디코딩해야 할 수 있습니다.

## 5. 프로토콜을 확인하는 방법 {#5-how-to-check-the-protocol}

이 설정은 HTTP/1.1 폴백과 함께 HTTP/2를 허용합니다. 모든 요청이 HTTP/2를 사용한다는 것을 보장하지는 않습니다.

연결은 두 가지입니다:

* 클라이언트 연결: 앱 또는 브라우저에서 Proxyman으로 가는 연결
* 업스트림 연결: Proxyman에서 서버로 가는 연결

두 연결은 서로 다른 HTTP 버전을 사용할 수 있습니다. 클라이언트 연결은 요청의 HTTP 버전으로 확인합니다. 업스트림 프로토콜은(기록된 경우) Request 패널에서 **Connection Log**를 열어 확인합니다.

* `h2`는 HTTP/2를 뜻합니다.
* `http/1.1`은 HTTP/1.1을 뜻합니다.
* 제안된 프로토콜이라고 해서 서버가 그것을 선택했다는 뜻은 아닙니다. 수락된 프로토콜을 확인합니다.
* 예전에 저장한 캡처에는 업스트림 프로토콜 정보가 없을 수 있습니다. 데이터가 없다고 해서 HTTP/1.1을 뜻하지는 않습니다.

## 6. Connection Log의 연결 정보 {#6-connection-info-in-connection-log}

* 요청을 선택한 다음 Request 패널에서 **Summary** 옆의 **Connection Log**를 엽니다.
* DNS 결과, 연결 시도, TLS 및 인증서 세부 정보, HTTP 헤더가 담긴 `curl -v`와 비슷한 로그를 볼 수 있습니다.
* 업스트림 연결이 HTTP/2를 사용하는지 확인하려면 `ALPN: server accepted h2`를 확인합니다. 재사용된 연결에는 `Re-using existing connection`이 표시됩니다.
* `*`는 연결 이벤트, `>`는 요청, `<`는 응답을 나타냅니다.

샘플 값을 사용한 예시입니다:

```text
* Host api.example.com:443 was resolved.
* IPv4: 192.0.2.10
* Connected to api.example.com (192.0.2.10) port 443
* ALPN: Proxyman offers h2,http/1.1
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* using HTTP/2
> GET /profile HTTP/2
< HTTP/2 200 OK
* Connection #0 to host api.example.com left intact
```

탭이 숨겨져 있다면 [Custom Previewer Tab](https://proxyman.com/docs/ko/basic-features/custom-previewer-tab)의 Request 아래에서 **Connection Log**를 켤 수 있습니다. 모든 필드는 [Connection Log 가이드](https://proxyman.com/docs/ko/basic-features/connection-log)에서 확인할 수 있습니다.

## 7. 문제 해결 {#7-troubleshooting}

요청이 여전히 HTTP/1.1을 사용한다면:

* **Use HTTP/2**가 켜져 있는지 확인한 다음 새 요청을 보냅니다.
* 클라이언트가 HTTP/2를 지원하고 협상하는지 확인합니다.
* 업스트림 서버가 HTTP/2를 지원하는지 확인합니다. 폴백이 정상 동작일 수도 있습니다.
* 어느 쪽에서 HTTP/1.1을 사용했는지 판단하기 전에 두 연결을 모두 확인합니다.

HTTPS 콘텐츠가 보이지 않는다면:

* 클라이언트가 트래픽을 Proxyman으로 보내고 있는지 확인합니다.
* 인증서 신뢰 설정과 도메인의 SSL Proxying 규칙을 확인합니다.
* 클라이언트가 인증서를 거부한다면 [SSL 오류](https://proxyman.com/docs/ko/troubleshooting/get-ssl-error-from-https-request-and-response)를 참고합니다.

## 8. 관련 가이드 {#8-related-guides}

* [SSL Proxying](https://proxyman.com/docs/ko/basic-features/ssl-proxying)
* [Connection Log](https://proxyman.com/docs/ko/basic-features/connection-log)
* [Split View](https://proxyman.com/docs/ko/basic-features/split-view)
* [Tab View](https://proxyman.com/docs/ko/basic-features/multiple-tabs)
* [업스트림 ALPN 및 HTTP/2 Scripting 설정](https://proxyman.com/docs/ko/scripting/snippet-code#upstream-alpn-and-http2-settings)
* [HTTP/2 출시 블로그](https://proxyman.com/posts/2026-09-19-http2-is-finally-here)
