TL;DR

  • Chromium은 사용자가 기본 검색 엔진(DSE)의 검색 추천을 선택할 때, 해당 엔진이 사전 동의한 경우 위치 정보를 X-Geo HTTP 헤더로 전송할 수 있으며 검색 엔진은 추가 위치 API 호출 없이 지역화된 결과를 제공할 수 있음
  • 기본 검색 엔진 제공업체는 Chromium 검색 엔진 데이터에서 send_x_geo_header 속성을 활성화해야 수신 대상이 됨
  • 헤더는 X-Geo: w <base64url_encoded_protobuf> 형식이며 Base64Url로 인코딩된 프로토콜 버퍼 메시지를 포함함
  • Chromium은 여러 요인과 트리거를 기준으로 검색 요청에 X-Geo 헤더를 때때로 첨부함
  • 바이너리 페이로드는 omnibox.LocationDescriptor 프로토콜 버퍼 메시지이며 스키마는 components/omnibox/browser/proto/partner_location_descriptor.proto에 정의됨

개요

  • 이 문서는 Chromium이 자격을 갖춘 기본 검색 엔진 제공업체에 보내는 X-Geo 위치 정보 헤더를 설명함
  • 사용자가 Chromium에서 기본 검색 엔진을 사용해 검색 추천을 선택하면 Chromium이 선택적으로 사용자의 지리적 위치를 X-Geo HTTP 헤더에 첨부함
  • 이를 통해 검색 엔진은 페이지 로드 이후 추가적인 자바스크립트 지리 위치 API(JavaScript Geolocation API) 사용과 후속 새로고침 없이 초기 탐색에서 지역화된 검색 결과를 반환할 수 있음
  • 예시는 주변 업체와 지역 날씨임

자격 요건 및 옵트인 요구 사항

  • 이 기능이 작동하려면 기본 검색 엔진(DSE) 제공업체가 Chromium의 검색 엔진 데이터에서 헤더 수신을 옵트인하도록 설정해야 함
  • X-Geo 헤더 수신을 위해 Chromium에 엔진 정의를 설정하려는 검색 엔진 제공업체는 //third_party/search_engines_data/README.chromium의 지침에 따라 send_x_geo_header 속성을 true로 설정해야 함
  • DSE가 옵트인하면 Chromium은 여러 요인과 트리거를 기준으로 때때로 검색 요청에 X-Geo 헤더를 전송함

HTTP 헤더 형식

  • 검색 요청에 첨부되는 헤더 형식은 X-Geo: w <base64url_encoded_protobuf>
  • 접두사(w )는 항상 ASCII 문자 w와 공백으로 시작하며, 바이트 값은 0x77 0x20
  • 이 접두사는 해당 문자열이 X-Geo 프로토콜을 따르는 Base64 인코딩 프로토콜 버퍼 메시지임을 식별함
  • w 접두사 뒤의 바이너리 프로토콜 버퍼 페이로드는 Base64Url로 인코딩됨
  • 인코딩 규격은 RFC 4648 섹션 5이며 URL 안전 문자 집합 A-Z, a-z, 0-9, -, _를 사용하고 패딩 문자 =를 포함함

프로토콜 버퍼 사양

  • 바이너리 페이로드를 디코딩하면 omnibox.LocationDescriptor 프로토콜 버퍼 메시지가 됨
  • .proto 스키마는 Chromium의 components/omnibox/browser/proto/partner_location_descriptor.proto에 정의됨