当前位置: 首页 > 知识库问答 >
问题:

javascript - H5部署后 页面video媒体获取 navigator获取不到mediaDevices问题处理???

佴波鸿
2023-12-10

关于 http 页面video媒体获取 navigator.mediaDevices 为undefined问题???

根页面是http,内嵌套iframe url是https , iframe内依然还是获取不到 相应的navigator.mediaDevices 权限呀???求解决

备注:去除网上 地址为localhost:// 访问时 地址为https:// 时 为文件访问file:/// 这种解决方案

共有1个答案

逄俊力
2023-12-10

这个问题可能是由于页面加载的安全策略引起的。当你的主页面是通过 HTTP 协议加载的,它可能无法访问到通过 HTTPS 协议加载的 iframe 中的 navigator.mediaDevices。这是由于浏览器安全策略的规定,为了防止恶意网站滥用设备的媒体输入,浏览器通常会阻止 HTTP 页面访问 HTTPS 页面的某些功能。

对于你的问题,有以下几种可能的解决方案:

  1. 将主页面也迁移到 HTTPS:这是最直接的解决方案。通过将主页面也迁移到 HTTPS,你可以确保所有的页面都在同一安全环境中,不会受到跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等安全威胁。在迁移到 HTTPS 后,你的问题应该会得到解决。
  2. 在服务器端进行重定向:如果由于某些原因你无法将主页面迁移到 HTTPS,你也可以考虑在服务器端进行 HTTP 到 HTTPS 的重定向。这样,当用户通过 HTTP 访问你的网站时,服务器会自动将他们重定向到 HTTPS 版本。但是请注意,这种方法并不能完全解决你的问题,因为重定向是在服务器端进行的,客户端可能还是无法访问 HTTPS 页面的某些功能。
  3. 使用 CSP (Content Security Policy):CSP 是一种安全措施,可以防止跨站脚本攻击(XSS)。你可以尝试在你的 HTTP 页面中添加 CSP 策略,看是否可以解决你的问题。但是请注意,这种方法可能并不总是有效,因为 CSP 的具体效果取决于它的策略设置。

以上就是针对你问题的一些可能的解决方案。请根据你的实际情况进行选择。

 类似资料:
  • 如果在Manifest中声明了了"allAutoDetected"权限,则Chrome应用可以无需用户手动指定,自动获取到媒体库的位置。 通过getMediaFileSystems方法可以获取到媒体库对应的fileSystem: chrome.mediaGalleries.getMediaFileSystems({ interactive: 'if_needed' }, function(

  • 得到Maven问题,下面是我得到的问题: [错误]插件org.apache.maven.plugins:maven-resources-Plugin:2.6或其依赖项无法解析: 未能读取org.apache.maven.Plugin:maven-resources-Plugin:jar:2.6: 无法将工件org.apache.maven.Plugin:2.6从/传输到central(https:

  • 在8.1节中提到过,通过getMediaFileSystems方法获取到的fileSystem中的root属性值就是Entry对象,结合第7章的内容就可以对媒体库中的文件进行操作。 通过getMetadata方法可以读取出媒体文件相关信息1: chrome.mediaGalleries.getMetadata(mediaFile, {metadataType: 'all'}, function(m

  • 我写一个油猴脚本想获取验证码的base64,但是获取的不是图一哪个预加载的圈圈,就是图二只有一部分,要怎么获取全部图片啊,如下图 https://demo.eyoucms.com/login.php?s=Admin/login

  • 首先我想提一下,我是HtmlUnit的新手。我试图获取一个网页,然后解析其内容。网址:https://secure.fattal.co.il/BE_Results.aspx?Lang=heb 但是我最终得到了下面的javascript内容: 注意:我开始使用jsoup解析器获取URL,但是响应是相同的javascript。 在搜索了javascript内容之后,我意识到我应该使用像HtmlUnit

  • 问题内容: 如何使用JavaScript获取HTML页面的标题? 问题答案: 用途: