미니 Chromium의 User-Agent를 대체할 Client Hint
- T1Canna
- 조회 수 7612
- 2020.01.15. 13:25
이 문서는 아직 초안입니다.
OS 브랜드와 버저닝을 전달해 주는 것이 옳은 지 등에 대한 논의가 계속 이루어지고 있습니다.
기존 User-Agent의 경우, 유저의 브라우징 환경에 대한 정보가 필터 없이 그대로 넘겨지는 문제가 있었는데 (아래 예제 참조)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.2704.79 Safari/537.36 Edge/18.014
Sec-CH-UA: "Examplary Browser 73"
라는 UA Client Hint를 전송하고, 서버가 이보다 더 많은 정보(예를 들면 브라우저가 작동 중인 OS 정보)를 보고 싶으면
Accept-CH: UA, Platform
과 같이 보고 싶은 정보를 명시해서 유저에게 다시 던져줍니다. 이 경우, 브라우저는 다음 요청부터
Sec-CH-UA: "Examplary Browser 73.3R8.2H.1" Sec-CH-Platform: "Windows 10"
와 같이 서버가 요청한 정보를 추가적으로 제공합니다.
브라우저가 제공할 수 있는 전체 정보의 목록은
-
브라우저 브랜드(for example: "cURL", "Edge", "The World’s Best Web Browser")
-
브라우저 메이저 버저닝 (for example: "72", "3", or "28")
-
브라우저 마이너 버저닝 (for example: "72.0.3245.12", "3.14159", or "297.70E04154A")
-
OS 브랜드와 버저닝 (for example: "Windows NT 6.0", "iOS 15", or "AmazingOS 17G")
-
CPU 아키텍쳐 (for example: "ARM64", or "ia32")
-
모바일 기기의 모델명 (for example: "", or "Pixel 2 XL")
-
모바일 브라우저 여부 (for example: ?0 or ?1)
입니다.
여기까지만 놓고보면 '그냥 모든 정보에 대한 요청을 하면 기존 UA랑 다를게 없지 않나' 싶지만, Client Hint의 경우 '정보 접근 제한' 에 대한 고려도 해 놓았습니다. 따라서, 브라우저는 서버에 Client Hint 응답을 보내기 전에 유저에게 정말 이 정보를 모두 보내고 싶은지에 대한 확인 절차를 거칠 수 있습니다(기존 크로뮴의 마이크/카메라/위치 권한 등을 생각하면 될듯).