vue项目使用iframe内置嵌套多个页面,嵌套的页面拒绝访问,属于什么问题,怎么解决
所有浏览器都不行吗,可能是跨域或者安全策略的原因
A项目中使用iframe嵌入B系统页面,B系统页面需要获取麦克风,摄像头权限。需要对iframe设置权限开放(allow属性)
reference:iframe标签allow属性
<iframe
src="https://pageB"
frameBorder="0"
width={1000}
height={720}
allow="camera; microphone"
/>
针对该问题,可能存在以下几种解决方案:
<meta http-equiv="X-Frame-Options" content="allow">
其中,content="allow"
表示允许被外部页面通过iframe嵌入。添加meta标签的方式可以在被嵌入页面的html文件头中添加。
使用代理页面进行嵌套 可以创建一个代理页面,该代理页面通过ajax请求被嵌套的页面,然后将获取到的页面内容渲染到自己的iframe中再展示,这种方式可以避免被嵌套的页面HTTP头中存在限制外部访问的情况。
将被嵌套的页面和父页面作为同一个域名下的子站点 如果被嵌套的页面和父页面在不同域名下,可以将两者放在同一个域名下的不同子目录,这样就不会存在跨域访问的限制问题。 比如,在apache服务器下可以将两个站点配置如下:
<VirtualHost *:80>
ServerName parent.com
DocumentRoot /path/to/parent
</VirtualHost>
<VirtualHost *:80>
ServerName child.parent.com
DocumentRoot /path/to/child
</VirtualHost>
上述配置可以在浏览器中通过以下地址访问:
http://parent.com/
http://child.parent.com/
综上,对于该问题,根据具体情况可以选择使用不同的解决方案。