iframe内置嵌套多个页面

vue项目使用iframe内置嵌套多个页面,嵌套的页面拒绝访问,属于什么问题,怎么解决

所有浏览器都不行吗,可能是跨域或者安全策略的原因

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7559729
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:iframe页面与vue父页面相互传值
  • 除此之外, 这篇博客: iframe内嵌页面 获取麦克风权限中的 场景一 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • A项目中使用iframe嵌入B系统页面,B系统页面需要获取麦克风,摄像头权限。需要对iframe设置权限开放(allow属性)
    referenceiframe标签allow属性

    <iframe
      src="https://pageB"
      frameBorder="0"
      width={1000}
      height={720}
      allow="camera; microphone"
    />
    
  • 以下回答由chatgpt基于相关博客总结生成:

    针对该问题,可能存在以下几种解决方案:

    1. 修改iframe嵌套的页面的HTTP头 在被拒绝访问的情况下,可能是因为被嵌套的页面的HTTP头中存在限制外部访问的设置,可以在被嵌套的页面中加入以下HTTP头meta标签:
    <meta http-equiv="X-Frame-Options" content="allow">
    

    其中,content="allow"表示允许被外部页面通过iframe嵌入。添加meta标签的方式可以在被嵌入页面的html文件头中添加。

    1. 使用代理页面进行嵌套 可以创建一个代理页面,该代理页面通过ajax请求被嵌套的页面,然后将获取到的页面内容渲染到自己的iframe中再展示,这种方式可以避免被嵌套的页面HTTP头中存在限制外部访问的情况。

    2. 将被嵌套的页面和父页面作为同一个域名下的子站点 如果被嵌套的页面和父页面在不同域名下,可以将两者放在同一个域名下的不同子目录,这样就不会存在跨域访问的限制问题。 比如,在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/
    
    1. 使用Vue组件 可以将被嵌套的页面也作为Vue组件进行开发,通过Vue组件之间的通信进行数据传递和相互操作。这种方式可以避免iframe和跨域访问的问题,但是需要修改被嵌套的页面和相应的代码,可能会带来比较大的工作量。

    综上,对于该问题,根据具体情况可以选择使用不同的解决方案。