Permissions-Policy: geolocation directive

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The HTTP Permissions-Policy header geolocation directive controls whether the current document is allowed to use the Geolocation Interface.

Specifically, where a defined policy blocks use of this feature, calls to getCurrentPosition() and watchPosition() will cause those functions' callbacks to be invoked with a GeolocationPositionError code of PERMISSION_DENIED.

Syntax

http
Permissions-Policy: geolocation=<allowlist>;
<allowlist>

A list of origins for which permission is granted to use the feature. See Permissions-Policy > Syntax for more details.

Default policy

The default allowlist for geolocation is self. The top-level browsing context and same-origin iframes are allowed access to the geolocation feature by default.

Examples

Basic usage

SecureCorp Inc. wants to disallow geolocation within all cross-origin iframes except those whose origin is https://example.com. It can do so by delivering the following HTTP response header to define a Permissions Policy:

http
Permissions-Policy: geolocation=(self "https://example.com")

SecureCorp Inc. must also include an allow attribute on each <iframe> element where geolocation is to be allowed:

html
<iframe src="https://example.com/map" allow="geolocation"></iframe>

Note: Specifying the Permissions-Policy header in this manner disallows geolocation for other origins, even if they are allowed by the <iframe> allow attribute.

Using the default policy

If an allowlist for geolocation is not defined by a Permissions-Policy response header, user agents will apply the default allowlist self. In this mode, geolocation is automatically allowed in the top-level browsing context and same-origin iframes, but not in cross-origin iframes.

To allow geolocation in a cross-origin iframe, include an allow attribute on the <iframe> element:

html
<iframe src="https://other.com/store-locator" allow="geolocation"></iframe>

Specifications

Specification
Geolocation
# permissions-policy

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
geolocation
Experimental
Chrome – Full support
Chrome 88 (Release date: 2021-01-19)
footnote Full support
Edge – Full support
Edge 88 (Release date: 2021-01-21)
footnote Full support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 74 (Release date: 2021-02-02)
footnote Full support
Safari – No support
Safari
footnote No support
Chrome Android – Full support
Chrome Android 88 (Release date: 2021-01-19)
footnote Full support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – Full support
Opera Android 63 (Release date: 2021-04-16)
footnote Full support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – Full support
Samsung Internet 15 (Release date: 2021-08-13)
footnote Full support
WebView Android – Full support
WebView Android 88 (Release date: 2021-01-19)
footnote Full support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

See also