| Internet Engineering Task Force (IETF) | I. Grigorik |
| Request for Comments: 8942 | Y. Weiss |
| Category: Experimental | |
| ISSN: 2070-1721 | February 2021 |
HTTP 클라이언트 힌트
요약
HTTP는 요청 헤더에 표현된 사용자 에이전트의 특성에 기초하여 서버가 특정 요청에 적합한 응답을 선택할 수 있도록 선제적인 콘텐츠 협상(proactive content negotiation)을 정의합니다. 실제로 사용자 에이전트는 이러한 요청 헤더가 사용될지 불분명하고, 헤더 전송이 성능과 개인정보에 영향을 미치기 때문에 종종 해당 요청 헤더 전송을 꺼립니다.
이 문서는 서버가 선제적 콘텐츠 협상을 위해 요청 헤더의 사용을 광고하는 데 사용할 수 있는 Accept-CH 응답 헤더와, 일반적으로 "클라이언트 힌트(Client Hints)"로 알려진 이러한 헤더의 생성에 대한 일련의 지침을 정의합니다.
이 문서의 상태
이 문서는 인터넷 표준 트랙 사양이 아니며, 검토, 실험적 구현 및 평가를 위해 게시됩니다.
이 문서는 인터넷 커뮤니티를 위한 실험적 프로토콜을 정의합니다. 이 문서는 인터넷 엔지니어링 태스크 포스(IETF)의 산물이며 IETF 커뮤니티의 합의를 나타냅니다. 공개 검토를 거쳤고 인터넷 엔지니어링 운영 그룹(IESG)에 의해 출판이 승인되었습니다. 모든 IESG 승인 문서가 인터넷 표준의 후보가 되는 것은 아닙니다; 자세한 내용은 RFC 7841 섹션 2를 참조하십시오.
이 문서의 현재 상태, 정오표 또는 피드백 제출 방법에 대한 정보는 https://www.rfc-editor.org/info/rfc8942에서 확인할 수 있습니다.
Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
1. 소개
웹에 접속하는 수천 종의 다양한 장치들이 있으며, 각 장치는 서로 다른 장치 기능과 선호 정보를 가지고 있습니다. 이러한 장치 기능에는 하드웨어 및 소프트웨어 특성뿐만 아니라 동적인 사용자 및 사용자 에이전트 선호도도 포함됩니다. 역사적으로 서버가 이러한 기능에 기반해 콘텐츠 전달 및 사용자 경험을 최적화하기를 원했던 애플리케이션들은 수동 식별(예: RFC7231 섹션 5.5.3의 User-Agent 헤더 필드를 기존의 사용자 에이전트 시그니처 데이터베이스와 매칭)이나 HTTP 쿠키 [RFC6265] 및 URL 매개변수를 사용하거나, 이러한 메커니즘들의 조합을 사용해 임시적 콘텐츠 협상을 수행해야 했습니다.
이러한 기술들은 설정 및 유지 관리가 비용이 많이 들고 애플리케이션과 서버 전반에서 이식 가능하지 않습니다. 또한 협상 중 어떤 데이터가 필요하고 실제로 사용되는지 사용자 에이전트와 서버 양쪽이 이해하기 어렵게 만듭니다:
- 사용자 에이전트 탐지는 모든 정적 변수를 신뢰성 있게 식별할 수 없고, 동적인 사용자 에이전트 선호를 추론할 수 없으며 외부 장치 데이터베이스가 필요하고 캐시 친화적이지 않으며 수동 지문 표면(passive fingerprinting)에 의존합니다.
- 쿠키 기반 접근법은 애플리케이션 및 서버 전반에서 이식 가능하지 않고, JavaScript 실행을 필요로 하여 클라이언트 측 지연을 추가하며 캐시 친화적이지 않습니다.
- URL 매개변수는 쿠키 기반 접근법과 유사하게 이식성이 부족하고 각 리소스의 URL 내부에 콘텐츠 협상 데이터를 인코딩해야 하는 요구사항 때문에 배포가 어렵습니다.
선제적 콘텐츠 협상(RFC7231 섹션 3.4.1)은 대안적 접근을 제공합니다. 사용자 에이전트는 지정된 명확한 요청 헤더를 사용하여 자신의 기능과 특성을 광고하고, 서버는 이러한 요청 헤더(또는 다른 암묵적 특성)에 기초하여 적절한 응답을 선택(또는 구성)할 수 있습니다.
그러나 전통적인 선제적 콘텐츠 협상 기술은 종종 사용자 에이전트가 이러한 요청 헤더를 과도하게 전송하게 만듭니다. 이는 요청의 '부피'를 늘려 성능 문제를 일으키고, 또한 수동적으로 이러한 정보를 제공함으로써 서버가 사용자에 대해 은밀하게 지문을 수집(fingerprinting)할 수 있게 되어 개인정보 문제를 야기합니다.
이 문서는 서버가 특정 선제적 콘텐츠 협상 기능에 옵트인(opt-in)하도록 허용하여 그에 따라 콘텐츠를 조정할 수 있게 하는 프레임워크인 Client Hints를 정의하며, 이러한 프레임워크를 사용하는 콘텐츠 협상 메커니즘에 대한 지침도 제공합니다. 또한 이 문서는 원본 서버가 이후 요청에서 사용자 에이전트가 이러한 헤더를 전송하도록 명시적으로 요청할 수 있게 하는 새로운 응답 헤더인 Accept-CH를 정의합니다.
Client Hints는 사용자 에이전트가 실제로 사용될 때만 요청 헤더를 전송하도록 보장함으로써 성능 문제를 완화하고, 서버가 데이터를 수동적으로 수집하는 것을 막기 위해 서버가 요구하는 헤더를 Accept-CH 응답 헤더를 통해 명시적으로 옵트인하도록 요구함으로써 수동 지문 수집 벡터를 능동적(active)인 벡터로 전환시켜 개인정보 문제를 완화합니다.
이 문서는 Client Hints의 특정 사용법을 정의하지 않습니다. 그러한 사용법은 각기 해당하는 사양에서 정의되어야 합니다.
그러한 사용법의 예로는 User-Agent Client Hints [UA-CH]가 있습니다.
1.1. 표기 규약
이 문서에서의 핵심 단어 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 및 "OPTIONAL"은 모두 대문자로 표시될 때에만 BCP 14의 설명대로 해석되어야 합니다. 자세한 내용은 [RFC2119] 및 [RFC8174]를 참조하십시오.
이 문서는 Augmented Backus-Naur Form(ABNF) 표기법을 사용합니다(참조: [RFC5234]).
2. 클라이언트 힌트 요청 헤더 필드
Client Hints 요청 헤더 필드는 서버가 적절한 응답을 선택하는 데 사용할 수 있는 데이터를 표시하기 위해 HTTP 사용자 에이전트가 사용하는 HTTP 헤더 필드입니다. 각 헤더는 서버가 응답을 조정하고 최적화하는 데 사용할 수 있는 사용자 에이전트의 선호를 전달합니다.
2.1. 클라이언트 힌트 전송
사용자 에이전트는 기본 설정, 사용자 구성 및 서버가 Accept-CH에 표현한 선호에 근거하여 요청에서 어떤 Client Hints를 보낼지 선택합니다. 사용자 에이전트와 서버는 아래에 설명된 옵트인 메커니즘을 사용하여 효율적인 콘텐츠 적응을 위해 어떤 헤더 필드를 전송해야 하는지를 협상할 수 있으며, 선택적으로 추가 메커니즘(예: [CLIENT-HINTS-INFRASTRUCTURE]에 설명된 것)을 사용하여 제3자가 동일한 헤더 필드에 접근하는 권한을 제어하는 위임 정책을 협상할 수 있습니다. 사용자 에이전트는 낮은 엔트로피로 간주되지 않는 힌트를 전송하기 위해 옵트인을 요구해야 합니다(EMPHASIS: SHOULD). 낮은 엔트로피 힌트의 예는 [CLIENT-HINTS-INFRASTRUCTURE]의 표를 참조하십시오.
구현자는 Client Hints 지원을 구현할 때 지문 수집(fingerprinting) 영향에 대해 인지하고 이 문서의 보안 고려사항 섹션(섹션 4)을 준수해야 합니다.
2.2. 서버의 클라이언트 힌트 처리
하나 이상의 Client Hints 헤더 필드를 포함하는 요청이 제시되면, 서버는 그 안의 정보를 기반으로 응답을 최적화할 수 있습니다. 그렇게 할 때, 그리고 리소스가 캐시 가능하다면, 서버는 어떤 힌트가 선택된 응답에 영향을 줄 수 있고 선택된 응답이 이후 요청에 적합한지 여부를 나타내기 위해 Vary 응답 헤더 필드(RFC7231 섹션 7.1.4)를 생성해야 합니다(EMPHASIS: MUST).
서버는 자신이 이해하거나 지원하지 않는 힌트를 무시해야 합니다(EMPHASIS: MUST). 무시된 힌트를 사용자 에이전트에 알리는 메커니즘은 없습니다.
또한 서버는 클라이언트 처리를 돕기 위해(해당 힌트에 의해 지정된 대로) 관련 값을 전달하는 추가 응답 헤더 필드를 생성할 수 있습니다.
3. 서버 지원 광고
서버는 아래에 설명된 메커니즘을 사용하여 Client Hints에 대한 지원을 광고할 수 있습니다.
3.1. Accept-CH 응답 헤더 필드
Accept-CH 응답 헤더 필드는 그 값에 표시된 힌트들에 대한 서버의 지원을 나타냅니다. 사용자 에이전트 정보를 Client Hints를 통해 수신하기를 원하는 서버는 가능한 한 빨리 응답에 Accept-CH 응답 헤더를 추가해야 합니다(EMPHASIS: SHOULD).
Accept-CH는 Structured Header입니다([RFC8941]). 그 값은 sf-list여야 하며(EMPHASIS: MUST), 멤버는 Tokens입니다. ABNF는 다음과 같습니다:
Accept-CH = sf-list
예를 들면:
Accept-CH: Sec-CH-Example, Sec-CH-Example-2
사용자 에이전트가 Accept-CH를 포함한 HTTP 응답을 수신하면, 이는 해당 원본(origin)이 이후 동일 출처(same-origin) 요청들에 대해 표시된 요청 헤더 필드들을 수신하도록 옵트인했음을 나타냅니다. 옵트인은 비보안 전송(HTTPS가 아닌 스킴을 사용하는 경우)으로 전달된 경우 무시되어야 합니다(EMPHASIS: MUST). 옵트인은 지속되어야 하며 사용자 에이전트가 정의하는 세션 기간 동안 원본에 바인딩되어 이후 요청에서 Client Hints를 전달할 수 있어야 합니다(EMPHASIS: SHOULD). 새로운 옵트인은 이전에 지속된 옵트인 값을 덮어쓰며 대신 지속되어야 합니다(EMPHASIS: SHOULD).
위의 Accept-CH 예는 사용자 에이전트가 "https://site.example"로 네비게이션한 응답으로 수신되었고 안전한 전송으로 전달되었다고 가정하면, 지속된 Accept-CH 선호는 "https://site.example"에 바인딩됩니다. 이후 예를 들어 "https://site.example/foobar.html"로의 네비게이션에 대해서는 사용되지만, 예를 들어 "https://foobar.site.example/"에는 사용되지 않습니다. 또한 네비게이션 응답으로 구성된 페이지에서 시작된 동일 출처 리소스 요청(예: "https://site.example/image.jpg")에는 이 선호를 사용하지만, 교차 출처 리소스 요청(예: "https://thirdparty.example/resource.js")에는 사용하지 않습니다. 이 선호는 다른 출처에서 "https://site.example"로 시작된 리소스 요청(예: "https://other.example/"로의 네비게이션에서 시작된 요청)으로 확장되지 않습니다.
3.2. 캐시와의 상호작용
하나 이상의 Client Hints에 따라 응답을 선택할 때, 그리고 리소스가 캐시 가능하다면 서버는 어떤 힌트가 선택된 응답에 영향을 줄 수 있고 선택된 응답이 이후 요청에 적합한지 여부를 나타내기 위해 Vary 응답 헤더 필드([RFC7234])를 생성해야 합니다.
Vary: Sec-CH-Example
위 예시는 캐시 키에 Sec-CH-Example 헤더 필드를 포함해야 함을 나타냅니다.
Vary: Sec-CH-Example, Sec-CH-Example-2
위 예시는 캐시 키에 Sec-CH-Example 및 Sec-CH-Example-2 헤더 필드를 포함해야 함을 나타냅니다.
4. 보안 고려사항
4.1. 정보 노출
이 문서에 의존하는 기능에서 사용되는 요청 헤더 필드는 개인정보를 보호하는 선제적 콘텐츠 협상을 가능하게 하고 수동적 지문 수집 벡터를 노출하지 않기 위해 사용자의 환경에 대한 정보를 노출합니다. 그러나 구현자는 최악의 경우 통제되지 않고 모니터링되지 않은 능동적 지문 수집이 수동적 지문 수집보다 나을 수 없다는 점을 염두에 두어야 합니다. 사용자에게 개인정보 이점을 제공하려면 사용자 에이전트는 Client Hints를 사용하는 기능이 노출하는 정보를 남용하지 못하도록 추가 정책을 적용해야 합니다.
기능이 노출하는 정보는 사용자에 대해 새로운 정보를 드러낼 수 있으므로 구현자는 다음의 고려사항, 권장 사항 및 모범 사례를 고려해야 합니다.
기본 가정은 요청 헤더로 사용자의 정보를 노출하는 것이 보안 관점에서 애플리케이션이 다른 수단으로 해당 정보를 얻는 것(예: JavaScript API를 통해 접근하여 서버로 전송하는 경우)과 동등하다는 것입니다.
Client Hints는 명시적 옵트인 메커니즘이므로, 사용자 환경에 대한 정보에 접근하기를 원하는 서버는 이를 적극적으로 요청해야 하며, 이는 클라이언트와 개인정보 연구원들이 어떤 원본이 해당 데이터를 수집하는지 추적하고 잠재적으로 대응할 수 있게 합니다. 헤더 기반 옵트인은 수동적 지문 수집 벡터의 제거를 가능하게 합니다. 예를 들어, 사용자 에이전트는 User-Agent 문자열로 노출되는 정보를 줄이는 대신 User-Agent Client Hints를 통해 해당 정보에 대한 능동적 접근을 가능하게 할 수 있습니다. 또는 사용자는 이미 스크립트를 통해 사용할 수 있는 정보를(예: Save-Data Client Hints <https://wicg.github.io/savedata/#save-data-request-header-field>) 헤더로 노출하되 수동적 지문 표면을 증가시키지 않을 수 있습니다. Client Hints 기능을 지원하는 사용자 에이전트는 특정 정보가 옵트인한 서버로 전송될 때 동등한 정보를 수동적으로 전송하지 않도록 해야 합니다(EMPHASIS: SHOULD).
따라서 이 문서에 의존하여 Client Hint 헤더를 정의하는 기능은 애플리케이션에 사용자 에이전트를 통해 이미 제공되지 않는 새로운 정보를 제공해서는 안 됩니다(예: 기존 요청 헤더, HTML, CSS 또는 JavaScript에서 제공되는 정보). 이는 금지되어야 합니다(EMPHASIS: MUST NOT).
이러한 기능은 노출 정보의 다음 측면을 고려해야 합니다:
- 엔트로피:
- 매우 세분화된 데이터를 노출하면 서로 다른 원본에 대한 여러 요청에서 사용자를 식별하는 데 사용될 수 있습니다. 표현될 수 있는 헤더 필드 값의 집합을 줄이거나, 광고된 값이 현재 값을 정확히 나타내지 않고 근사치가 되도록 열거형 범위로 제한하면 프라이버시를 개선하고 링크 가능성(linkability) 위험을 줄일 수 있습니다.
- 민감도:
- 기능은 사용자 민감 정보를 노출해서는 안 됩니다(EMPHASIS: SHOULD NOT). 예를 들어 특정 사용자 행위(권한 프롬프트나 사용자 활성화 등)에 의해 제공되는 정보는 Client Hint로 노출되어서는 안 됩니다(EMPHASIS: SHOULD NOT).
- 시간에 따른 변경:
- 기능은 시간이 지남에 따라 변경되는 사용자 정보를 노출해서는 안 됩니다(EMPHASIS: SHOULD NOT), 단 상태 변경 자체가 또한 노출되는 경우(예: JavaScript 콜백을 통해)에는 예외일 수 있습니다.
다양한 기능은 낮은 엔트로피·비민감·정적 정보(예: 사용자 에이전트 정보)와 높은 엔트로피·민감·동적 정보(예: 지리 위치) 사이의 스펙트럼에서 서로 다른 위치에 놓일 것입니다. 사용자 에이전트는 특정 기능이 제공하는 가치와 이러한 고려사항을 비교하여 기능별 또는 다른 세분화된 기준에 따라 서로 다른 정책을 가질 수 있습니다.
구현자는 어떤 Client Hints 헤더 필드가 광고되는지를 제어하기 위해 사용자 및 서버 제어 메커니즘과 정책을 모두 고려해야 합니다:
- 구현자는 일부 또는 모든 Client Hints 헤더 필드의 제공을 옵트인된(origin) 원본에만 제한해야 합니다(EMPHASIS: SHOULD), 단 옵트인 원본이 명시적으로 다른 원본에 Client Hints 헤더 필드를 요청할 권한을 위임한 경우는 예외입니다.
- 개인정보와 대역폭 제한을 균형있게 고려할 수 있도록 사용자 선택 메커니즘을 제공하는 구현자는 수동적 지문 수집의 위험과 같은 개인정보 영향에 대해 사용자가 이해하도록 설명하는 것이 어렵거나 실용적이지 않을 수 있음을 고려해야 합니다.
- 특정 사용 사례나 위협 모델에 특화된 구현은 일부 또는 모든 Client Hints 헤더 필드의 전송을 피할 수 있습니다(MAY). 예를 들어 링크 가능성(linkability) 위험이 더 높은 헤더 필드의 전송을 회피할 수 있습니다.
사용자 에이전트는 사이트 데이터, 브라우징 캐시, 쿠키 또는 유사 항목이 지워질 때 지속된 옵트인 선호를 반드시 지워야 합니다(EMPHASIS: MUST).
4.2. 배포 및 보안 위험
새 요청 헤더를 배포할 때는 몇 가지 고려사항이 필요합니다:
- 헤더 필드 이름의 기존 사용과 인한 잠재적 충돌
- 헤더 필드 값으로 전달되는 데이터의 속성
새로운 Client Hints의 작성자는 클라이언트 측 콘텐츠(예: 스크립트)에 의해 추가될 필요가 있는지, 아니면 Client Hints가 사용자 에이전트에 의해 독점적으로 설정되어야 하는지를 신중히 고려해야 합니다. 후자의 경우 헤더 필드 이름에 Sec- 접두사를 사용하면 스크립트 및 다른 애플리케이션 콘텐츠가 사용자 에이전트에서 이를 설정하는 것을 방지하는 효과가 있습니다. "Sec-" 접두사를 사용하면 헤더 값이 사용자 에이전트에 의해 생성되었음을 서버에 신호로 보냅니다. 자세한 내용은 [FETCH]를 참조하십시오.
관례상 Client Hints인 요청 헤더는 이 프레임워크를 사용함을 더 쉽게 식별하기 위해 CH- 접두사를 사용하도록 권장됩니다. 예: CH-Foo 또는 "Sec-" 접두사를 포함한 Sec-CH-Foo. 이렇게 하면 프로그래밍 방식으로 식별하기 쉬워져(예: 프라이버시 필터가 인식되지 않은 힌트를 요청에서 제거하는 경우) 유용합니다.
Accept-CH 옵트인 메커니즘으로 협상된 Client Hints 요청 헤더는 필드 이름이 sf-token과 일치해야 합니다(EMPHASIS: MUST).
4.3. 남용 탐지
능동적 지문 수집 정보에 대한 접근을 추적하는 사용자 에이전트는 Client Hints 헤더의 발신을 동등한 API 접근으로 간주하는 것을 고려해야 합니다(EMPHASIS: SHOULD).
Client Hints의 남용 연구는 Client Hints를 포함한 요청에 대한 HTTP 응답이 다른 값 또는 값이 없는 경우의 응답과 어떻게 다른지를 조사할 수 있습니다. 이는 어떤 Client Hints가 사용되는지를 밝히는 데 사용되어 연구자들이 추가 분석을 수행할 수 있게 합니다.
5. 힌트 전송 비용
서버로 Client Hints를 전송하면 요청 바이트 크기가 증가합니다. 이 증가의 일부는 HTTP 헤더 압축 스킴으로 완화될 수 있지만, 전송되는 각 새로운 힌트는 여전히 대역폭 사용량을 어느 정도 증가시킵니다. 서버는 Client Hints 수신을 옵트인할 때 이를 고려해야 하며, 콘텐츠 적응 목적에 사용되지 않는 한 힌트 수신에 옵트인하지 않아야 합니다(EMPHASIS: SHOULD NOT).
요청 바이트 크기 증가로 인해, 이 문서에 의존하여 Client Hints를 정의하는 기능은 해당 힌트의 전송을 특정 요청 목적지로 제한하는 것을 고려할 수 있습니다(MAY), 이러한 목적지에서 힌트가 더 유용할 가능성이 높기 때문입니다(참조: [FETCH]).
6. IANA 고려사항
이 문서에 의존하는 기능들은 추가된 요청 헤더 필드를 "Permanent Message Header Field Names" 레지스트리에 등록할 것으로 예상됩니다(참조: [RFC3864]).
이 문서는 "Accept-CH" HTTP 응답 헤더 필드를 정의하며, IANA는 이를 동일한 레지스트리에 등록했습니다.
6.1. Accept-CH
- 헤더 필드 이름:
- Accept-CH
- 적용 프로토콜:
- HTTP
- 상태:
- experimental
- 작성자/변경 컨트롤러:
- IETF
- 명세 문서:
- 이 RFC의 섹션 3.1
- 관련 정보:
- Client Hints 관련
7. 참고문헌
7.1. 규범적 참조문헌
- [RFC2119]
- Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
- [RFC3864]
- Klyne, G., Nottingham, M., and J. Mogul, “Registration Procedures for Message Header Fields”, BCP 90, RFC 3864, DOI 10.17487/RFC3864, September 2004, <https://www.rfc-editor.org/info/rfc3864>.
- [RFC5234]
- Crocker, D., Ed. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF”, STD 68, RFC 5234, DOI 10.17487/RFC5234, January 2008, <https://www.rfc-editor.org/info/rfc5234>.
- [RFC7231]
- Fielding, R., Ed. and J. Reschke, Ed., “Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content”, RFC 7231, DOI 10.17487/RFC7231, June 2014, <https://www.rfc-editor.org/info/rfc7231>.
- [RFC7234]
- Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., “Hypertext Transfer Protocol (HTTP/1.1): Caching”, RFC 7234, DOI 10.17487/RFC7234, June 2014, <https://www.rfc-editor.org/info/rfc7234>.
- [RFC8174]
- Leiba, B., “Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words”, BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
- [RFC8941]
- Nottingham, M. and P-H. Kamp, “Structured Field Values for HTTP”, RFC 8941, DOI 10.17487/RFC8941, February 2021, <https://www.rfc-editor.org/info/rfc8941>.
7.2. 정보 제공 참조문헌
- [CLIENT-HINTS-INFRASTRUCTURE]
- Weiss, Y., “Client Hints Infrastructure”, July 2020, <https://wicg.github.io/client-hints-infrastructure/>.
- [FETCH]
- WHATWG, “Fetch - Living Standard”, <https://fetch.spec.whatwg.org/>.
- [RFC6265]
- Barth, A., “HTTP State Management Mechanism”, RFC 6265, DOI 10.17487/RFC6265, April 2011, <https://www.rfc-editor.org/info/rfc6265>.
- [UA-CH]
- West, M. and Y. Weiss, “User-Agent Client Hints”, August 2020, <https://wicg.github.io/ua-client-hints/>.
감사의 말
Mark Nottingham, Julian Reschke, Chris Bentzel, Ben Greenstein, Tarun Bansal, Roy Fielding, Vasiliy Faronov, Ted Hardie, Jonas Sicking, Martin Thomson 및 IETF HTTP 작업 그룹의 수많은 기타 구성원들에게 귀중한 도움과 피드백에 대해 감사드립니다.