赞
踩
document.featurePolicy.allowedFeatures();
来进行查看。如果是嵌套页面,记得使用浏览器工具左上方切换按钮切换到对应的iframe中去使用,你会发现这个命令在主项目和iframe中的权限其实并不一样。navigator.permissions.query({name:'geolocation'}).then(function(result) { if (result.state == 'granted') { report(result.state); geoBtn.style.display = 'none'; } else if (result.state == 'prompt') { report(result.state); geoBtn.style.display = 'none'; navigator.geolocation.getCurrentPosition(revealPosition,positionDenied,geoSettings); } else if (result.state == 'denied') { report(result.state); geoBtn.style.display = 'inline'; } result.onchange = function() { report(result.state); } });
<iframe id="task-view-1" src="/page" frameborder="0" allow="microphone *;camera *;midi;encrypted-media;clipboard-read *; clipboard-write *;" style="z-index: 1;"></iframe>
如果只写权限不写域名默认是无权限,所以必须要写上生效域名。
方法二:添加Feature-Policy或者Permissions-Policy
Feature Policy 是一个新的 http 响应头属性,允许一个站点开启或者禁止一些浏览器属性和 API,来更好的确保站点的安全性和隐私性。有点类似内容安全策略,但是它控制的是浏览器的特征而不是安全行为.
跟其他 http 安全响应头的设置一样,只需要敲定页面具体的限制策略,然后在 http 响应头中返回相应的策略即可:
Feature-Policy: vibrate 'self'; usermedia '*'; sync-xhr 'self' example.com
<feature> <allowlist>
<feature>
允许开启或者禁止的浏览器属性和API列表Feature-Policy: geolocation 'self' https://example.com; microphone 'none'
Permissions-Policy: geolocation=(self "https://example.com"), microphone=()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。