跨域iframe 配置fullscreen权限
在新版本的 Chrome 等浏览器中,默认情况下禁止了跨域 iframe 开启全屏的权限。在 iframe 中,我们通常使用 element.requestFullscreen() 方法来进行全屏展示。根据 MDN 文档,为了让 iframe 展示全屏,我们需要配置 allowfullscreen 属性,注意这个属性已经被重新定义为 allow="fullscreen"。
HTMLCopy<iframe src="xxx" allow="fullscreen"></iframe>
W3C 提供了一个新标准叫做 Permissions-Policy,可以通过在返回的响应中传递权限策略的 HTTP 标头来进行更加精细化的权限控制。如果没有配置,默认是允许所有权限。权限策略会与 iframe 的 allow 属性取交集,也就是说,如果你的 iframe 没有设置 allow 属性,即使允许了所有权限,也不会生效。
我们可以在控制台的元素中对 iframe 元素点击右键,显示 iframe 的详细信息,就可以看到这个 iframe 的权限策略。
比如,SecureCorp 公司想要在应用中禁用震动和定位 API,可以在返回的响应中传递以下定义权限策略的 HTTP 标头信息:
HTTPCopyPermissions-Policy: vibrate 'none'; geolocation 'none'
通过使用 'none' 关键词,不管原来如何设定,这些特性在所有浏览上下文中都会被禁用。
Permissions-Policy:
其中,<allowlist> 可以是以下几种:
*:允许在当前文档和所有包含的内容(比如 iframes)中使用该特性。'self':允许在当前文档中使用该特性,但在包含的内容(比如 iframes)仍使用原值。'src':(只在 iframe 中允许)只要在src中的 URL 和加载 iframe 用的 URL 相同,则在 iframe 中允许该特性。'none':从最上层到包含的内容都禁止该特性。<origin(s)>:在特定的源中允许,源 URL 以空格分割。
* 和 'none' 只允许单独使用,而 'self' 和 'src' 可以与多个源地址一起使用。
所有特性的默认 allowlist 如下:
*:本特性默认在最上层和包含的内容中(如 iframes)允许。'self':本特性默认在最上层允许,在包含的内容中(如 iframes)使用源地址相同的设置。也就是说,该特性在 iframe 中不允许跨域访问。'none':本特性默认在最上层和包含的内容中(如 iframes)都禁止。
参考文章:
跨域iframe 配置fullscreen权限的更多相关文章
- 跨域请求配置 Amazon AWS S3 腾讯云 阿里云 COS OSS 文件桶解决方案以及推荐 Lebal:Research
跨域请求配置 跨域请求指的就是不同的域名和端口之间的访问.由于 ajax 的同源策略影响.跨域请求默认是不被允许的. 使用@font-face外挂字体时,可能遇到跨域请求CROS问题:F12控制台报错 ...
- 跨域iframe的高度自适应
If you cannot hear the sound of the genuine in you, you will all of your life spend your days on the ...
- 使用postMesssage()实现跨域iframe页面间的信息传递----转载
由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...
- 完美实现跨域Iframe高度自适应【Iframe跨域高度自适应解决方案】
Iframe的强大功能偶就不多说了,它不但被开发人员经常运用,而且黑客们也常常使用它,总之用过的人知道它的强大之处,但是Iframe有个致命的“BUG”就是iframe的高度无法自动适应,这一点让很多 ...
- javascript跨域通信(一):利用location.hash实现跨域iframe自适应
页面域关系: a.html所属域A:www.A.comb.html所属域B:www.B.com 问题本质: js对跨域iframe访问问题,因为要控制a.html中iframe的高度和宽度就必须首先读 ...
- 谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!
谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个 ...
- spring mvc \ spring boot 允许跨域请求 配置类
用@Component 注释下,随便放个地方就可以了 package com.chinaws.wsarchivesserver.core.config; import org.springframew ...
- Web Api跨域访问配置及调用示例
1.Web Api跨域访问配置. 在Web.config中的system.webServer内添加以下代码: <httpProtocol> <customHeaders> &l ...
- nginx反向代理跨域基本配置与常见误区
最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器.同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一 ...
- geoserver源码学习与扩展——跨域访问配置
在 geoserver源码学习与扩展——restAPI访问 博客中提到了geoserver的跨域参数设置,本文详细讲一下geoserver的跨域访问配置. geoserver的跨域访问依赖java-p ...
随机推荐
- C#类型后加问号?
C# 可空类型(Nullable)说明_w3cschool 细说Nullable<T>类型 - Sweet-Tang - 博客园 (cnblogs.com) 值类型变量不能null,加问号 ...
- dotnet 6 创建进程 Process.Start 时设置 UseShellExecute 在 Windows 下对性能的影响
本文将告诉大家,在 dotnet 6 或 dotnet 7 版本里,启动新的进程时,在 StartInfo 设置 UseShellExecute 为 true 和 false 时,对性能的影响 在 d ...
- dotnet 6 使用 HttpWebRequest 进行 POST 文件将占用大量内存
我有用户给我报告一个内存不足的问题,经过了调查,找到了依然是使用已经被标记过时的 HttpWebRequest 进行文件推送,推送过程中,由于 System.Net.RequestStream 将会完 ...
- 从改一个老项目开始的PHP踩坑记
php所有版本的地址: https://windows.php.net/downloads/releases/archives/ 访问控制器时省略了index.php报No input file sp ...
- net core下链路追踪skywalking安装和简单使用
当我们用很多服务时,各个服务间的调用关系是怎么样的?各个服务单调用的顺序\时间性能怎么样?服务出错了,到底是哪个服务引起的?这些问题我们用什么方案解决呢,以前的方式是各个系统自己单独做日志,出了问题从 ...
- webpack调优技巧
webpack优化主要有三个方面:1.提高构建速度,2.减少打包体积,3.优化用户体验 提高构建速度: 启用多线程 thread-loader 使用thread-loader插件可以启用多线程进行构建 ...
- vue的pc端项目+element实现分页效果
效果图: 直接使用element操作很简单,记录一下要点: 根据ele提供的api修改data v-for="(i,s) in dataView.slice((currentPage-1)* ...
- 【爬虫案例】用Python爬大麦网任意城市的近期演出活动!
目录 一.爬取目标 二.展示爬取结果 三.讲解代码 四.同步视频 五.附完整源码 一.爬取目标 大家好,我是@马哥python说 ,一枚10年程序猿. 今天分享一期python爬虫案例,爬取目标是大麦 ...
- 谷歌 hackbar 不能使用的问题
谷歌 hackbar 不能使用的问题 下载 hackbar 插件:https://github.com/Mr-xn/hackbar2.1.3 解压文件,将其拖入 chrome 扩展程序中 点击详情,点 ...
- 一个IDEA界面如何同时打开多个项目
第一步:先导入其中一个工程 第二步:点击File->Project Structure 第三步:导入模块 最后点击Apply即可完成一个IDEA界面同时打开多个项目的需求.