GoogleのLuis Barguno Jane氏より、HTTPヘッダでジオロケーション情報の要求・送信を可能にする「Geolocation Header for HTTP over a Secure Context」という仕様が出ています。
背景
ユーザエージェントにおいてジオロケーションの取得は「Geolocation API」で取得可能でした。
しかし、この方法はHTMLを読み込んで、JavaScriptを実行して、サーバに送信する流れになります。サーバは、最初に読み込まれるHTMLを生成時はどうしても位置情報が使えないという事情があります。
また、スマートでバイスやIoT機器でJavaScriptの実行をサポートしてない環境においては、ジオロケーションの要求・送信に仕様はないのが現状です。
Secure Contexts下でジオロケーションの要求・送信が出来る仕組みを定義したのがこの仕様です。
HTTPレスポンスでGeolocation-Requestヘッダを受け取ったクライアントは、次回から指定されたPathにアクセスした時はGeolocationヘッダでジオロケーションを送信するようになります。
example
Geolocation-Requestヘッダ
サーバから、HTTPレスポンスにおいてジオロケーションを要求するGeolocation-Requestヘッダ
Geolocation-Request: Path="/localService"; Type=IfAlreadyGranted; Expires=Thu, 18 Dec 2017 12:00:00 UTC
(#本当は1行)
- Path: ジオロケーションを送信するスコープとなるPath
- Type:
- IfAlreadyGranted: 既にそのオリジンにおいて、ジオロケーションの取得が許可されていた場合のみジオロケーションを送信する
- MayPrompt: ジオロケーション取得のパーミッション要求プロンプトを表示してもよい(ユーザエージェント次第)
- Expires: 有効期限
Geolocationヘッダ
クライアントから、HTTPリクエストにおいてジオロケーションを送信するGeolocationヘッダ
Geolocation: Position=[47.368684, 8.535741, 345]; Accuracy=10; Timestamp=1495804846156; AltitudeAccuracy=20; Speed=1.5; Heading=27.53;
(#本当は1行)
- Position:RFC7946 GeoJSON形式の位置情報 (必須)
- Accuracy: メートル単位の精度 (必須)
- Timestamp: 取得時のタイムスタンプ (必須)
- AltitudeAccuracy: メートル単位の高度精度
- Speed: 速度(m/sec)
- Heading: 方位(0~360)