HTTP/1.1 업그레이드 헤더
HTTP/1.1 Upgrade headerHTTP |
---|
![]() |
요청 방법 |
헤더 필드 |
응답 상태 코드 |
보안 접근 제어 방법 |
보안 취약성 |
Upgrade 헤더 필드는 HTTP/1.1에서 도입된 HTTP 헤더 필드로, 교환에서 클라이언트는 클리어텍스트 요청을 하는 것으로 시작하며, 이후 새로운 HTTP 프로토콜 버전으로 업그레이드되거나 다른 프로토콜로 전환된다.연결 업그레이드는 클라이언트에 의해 요청되어야 하며, 서버가 업그레이드를 시행하고자 할 경우,426 Upgrade Required
응대하다그런 다음 클라이언트는 연결을 열어둔 상태에서 적절한 업그레이드 헤더를 사용하여 새 요청을 보낼 수 있다.
TLS와 함께 사용
한 가지 용도는 일반 HTTP 포트에서 요청을 시작하고 TLS(Transport Layer Security)로 전환하는 것이다.[1]실제로 그러한 사용은 드물며, HTTPS가 암호화된 HTTP를 시작하는 훨씬 일반적인 방법이다.
서버가 a를 반환함426
레거시 클라이언트에 장애가 클라이언트와 관련되었음을 알리는 상태 코드(400
레벨 코드는 클라이언트 오류를 나타낸다.)
이 방법은 다음과 같은 이유로 보안 연결을 설정하는 것이 유리하다.
- 서버 측에서 복잡하고 문제가 있는 URL 리디렉션이 필요하지 않음
- 보안 웹 사이트의 가상 호스팅 사용(HTTPS는 서버 이름 표시를 사용하여 이러한 호스팅도 허용함)
- 특정 리소스에 액세스할 수 있는 단일 방법을 제공하여 사용자 혼란 가능성 감소
암호화된 보안 수단과 암호화되지 않은 명확한 수단에 의해 서버에서 동일한 자원을 이용할 수 있는 경우, 중간인(man-in-the-middle)은 서버와의 암호화된 연결을 유지하면서 클라이언트와의 비암호화 및 인증되지 않은 연결을 암호화된 연결을 유지할 수 있다.
이 방법의 단점은 다음과 같다.
- 클라이언트가 URI에서 보안 HTTP에 대한 요구 사항을 지정할 수 없음(업그레이드 협상을 통해 요구될 수 있지만),
- HTTP는 홉 단위로 정의되기 때문에 프록시 서버를 우회하기 위해 HTTP 터널링이 필요할 수 있다.
WebSocket과 함께 사용
WebSocket은 또한 호환되는 방법으로 HTTP 서버와의 연결을 설정하기 위해 이 메커니즘을 사용한다.[2]WebSocket Protocol은 업그레이드된 연결을 설정하기 위한 핸드셰이크와 실제 데이터 전송의 두 부분으로 구성되어 있다.먼저 클라이언트는 다음 항목을 사용하여 WebSocket 연결을 요청하십시오.Upgrade: WebSocket
그리고Connection: Upgrade
헤더, 사용 중인 버전을 설정하고 핸드셰이크를 설정하는 몇 가지 프로토콜별 헤더.서버가 프로토콜을 지원하는 경우, 동일한 방식으로 응답Upgrade: WebSocket
그리고Connection: Upgrade
머리글과 핸드셰이크를 완료하십시오.[3]핸드셰이크가 성공적으로 완료되면 데이터 전송이 시작된다.
HTTP/2와 함께 사용
HTTP 업그레이드 메커니즘은 일반 HTTP에서 시작하는 HTTP/2를 설정하는 데 사용된다.[4]클라이언트가 HTTP/1.1 연결을 시작하고Upgrade: h2c
머리글서버가 HTTP/2를 지원하는 경우 HTTP 101 스위칭 프로토콜 상태 코드로 응답한다.HTTP 업그레이드 메커니즘은 cleartext HTTP2 (h2c)에만 사용된다.TLS를 통한 HTTP2의 경우(h2) 대신 ALPN TLS 프로토콜 확장이 사용된다.
참고 항목
참조
- ^ RFC 2817
- ^ "The WebSocket Protocol". IETF. Retrieved 15 December 2013.
- ^ Raymor, Brian. "WebSockets: Stable and Ready for Developers". Microsoft Developer Network. Archived from the original on 16 December 2013. Retrieved 15 December 2013.
- ^ "Starting HTTP/2 for "http" URIs". Hypertext Transfer Protocol Version 2 (HTTP/2). doi:10.17487/RFC7540. RFC 7540.
외부 링크
- IANA에서 하이퍼텍스트 전송 프로토콜(HTTP) 업그레이드 토큰 레지스트리