权限策略:地理位置
HTTP Permissions-Policy
头部 geolocation
指令控制当前文档是否允许使用 Geolocation
接口。
具体来说,在定义的策略阻止使用此功能的情况下,对 getCurrentPosition()
和 watchPosition()
的调用将导致这些函数的回调被调用,并带有 GeolocationPositionError
代码 PERMISSION_DENIED
。
默认情况下,Geolocation API 可以在顶级文档及其同源子框架中使用。此指令允许或阻止跨源框架访问地理位置。这包括同源框架。
语法
http
Permissions-Policy: geolocation=<allowlist>;
<allowlist>
-
允许使用该功能的来源列表。有关更多详细信息,请参阅
Permissions-Policy
> 语法。
默认策略
geolocation
的默认允许列表为 self
。
示例
一般示例
SecureCorp Inc. 希望在所有浏览上下文中禁用 Geolocation API,除了它自己的来源和来源为 https://example.com
的那些来源。它可以通过向定义权限策略发送以下 HTTP 响应头来实现这一点。
http
Permissions-Policy: geolocation=(self "https://example.com")
使用 <iframe> 元素
FastCorp Inc. 希望为所有跨源子框架禁用 geolocation
,除了特定的 <iframe>
。它可以通过向定义权限策略发送以下 HTTP 响应头来实现这一点。
http
Permissions-Policy: geolocation=(self)
然后在 <iframe>
元素上包含一个 allow 属性
html
<iframe src="https://other.com/map" allow="geolocation"></iframe>
有趣的是,allow
属性可以选择性地在某些框架中启用功能,而在其他框架中不启用,即使这些框架包含来自同一来源的文档。
规范
规范 |
---|
Geolocation # permissions-policy |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。