一尘不染

未捕获到的DOMException:在页面中列出iframe时,阻止了源为“ http:// localhost:8080”的框架访问跨域框架

javascript

我试图列出iframe页面中所有s 的名称,以便可以通过Selenium访问它们。

问题在于iframe每次更改的名称,因此我需要遍历所有这些更改。

我正进入(状态:

未捕获到的DOMException:阻止了起源为“ http:// localhost:8080 ”的框架访问跨域框架。

当我尝试使用以下方法遍历它们时出错:

for (var f = 0; f < window.frames.length; f++) {
    console.log(window.frames[f].name)
}

有没有办法以其他方式获得名称iframe?


阅读 353

收藏
2020-09-21

共1个答案

一尘不染

此错误消息…

Uncaught DOMException: Blocked a frame with origin "http://localhost:8080" from accessing a cross-origin frame.

…意味着WebDriver实例被阻止访问跨域框架。

同源政策
同源策略:同源策略限制了从一个来源加载的文档或脚本如何与另一个来源的资源进行交互。它是隔离潜在恶意文档的关键安全机制。

跨域资源共享(CORS)

跨域资源共享(CORS):跨域资源共享(CORS)是一种机制,该机制使用其他 HTTP标头来告诉浏览器客户端让在一个源(域)运行的 AUT(被测应用程序)具有访问权限从不同来源的服务器中选择资源。一个Web应用程序进行跨域HTTP请求时,它要求具有不同的原点(资源domain,protocol和port)比它自己的起源。

起源的例子

这是URL的来源比较示例 http://store.company.com/dir/page.html

URL                                                  Outcome    Reason
http://store.company.com/dir2/other.html             Success
http://store.company.com/dir/inner/another.html      Success
https://store.company.com/secure.html                Failure    Different protocol
http://store.company.com:81/dir/etc.html             Failure    Different port
http://news.company.com/dir/other.html               Failure    Different host

什么地方出了错
当您尝试遍历frames脚本/程序时,尝试