javascript - SecurityError:当访问 iFrame 的信息时,访问跨域对象上的属性“文档”的权限被拒绝
问题描述
我在另一个域上有一个带有 iFrame 的 html 页面。
<iframe id="myframe"src="https://www.example.com" height="1000" width=100%>
我想获取该网站的一些信息并在我的 html 页面上使用它们。例如,我想提取标签并将其设置为我的 html 的标题。
我使用了在 W3School 上找到的这段代码
var iframe = document.getElementById("myframe");
var y = (iframe.contentWindow || iframe.contentDocument);
if (y.document)y = y.document;
var strHeader = y.body.getElementsByClassName("header");
我用 IDE HelloWebFree(类似于 notepad++)写了进去。当我在 IDE 中尝试我的代码时,它工作正常。但是当我尝试使用 safari、Google Chrome 或 Firefox 打开它时,它不起作用。
我得到错误:“ SecurityError: Permission denied to access property "document" on cross-origin object
”。
我不需要对 iframe 内容进行任何更改,我只想阅读它并在我自己的 html 中使用它。所以我不明白为什么这是一个安全问题。为什么它在我的 IDE 中运行而不是在浏览器中运行?
我已经阅读了很多关于这个问题的帖子,但大多数帖子已经超过 5 年,不再适用。有人有想法吗?
解决方案
在浏览器中发生这种情况的原因是为了保护用户的安全。
它可以保护用户免受任何随机网站从他的 Facebook、银行网站或其他任何网站读取他的个人信息。
如果您想从网站访问公共信息,那么我建议在后端抓取它。
推荐阅读
- php - 如何使用表单生成器在 Symfony 4 控制器中获取表单值
- django - 使用 Django 进行多个注释后的关键错误
- amazon-redshift - 执行 AWS Redshift COPY 命令时的纪元时间戳到“yyyy-MM-dd HH:mm:ss.SSS”格式转换
- xml - 无法通过 IMPORTXML 从 Google 表格中的 NSE 网站获取数据
- php - SwifMailer setBcc 或 setTo 不起作用
- sql - 如果找不到,则搜索模式并删除搜索字符串字符,然后在 oracle sql 中再次搜索
- python - 我无法停止python中的循环
- navigation - Flutter Navigator:动态初始路由
- php - php中的总距离多个纬度和经度点?
- vb.net - 长 HEX 值拆分为 2 字节十六进制值或 4 字节十六进制值并将其转换为十进制(浮点)值使用 VB.Net