我正在<iframe>我的HTML页面中加载一个并尝试使用Javascript访问其中的元素,但是当我尝试执行我的代码时,我收到以下错误:
SecurityError: Blocked a frame with origin "http://www.<domain>.com" from accessing a cross-origin frame.
Run Code Online (Sandbox Code Playgroud)
你能帮我找一个解决方案,以便我可以访问框架中的元素吗?
我正在使用此代码进行测试,但徒劳无功:
$(document).ready(function() {
var iframeWindow = document.getElementById("my-iframe-id").contentWindow;
iframeWindow.addEventListener("load", function() {
var doc = iframe.contentDocument || iframe.contentWindow.document;
var target = doc.getElementById("my-target-id");
target.innerHTML = "Found it!";
});
});
Run Code Online (Sandbox Code Playgroud) 我正在SSL网站上成功投放谷歌广告,并正确设置CORS标题(并且大开)rack-cors:
Rails.configuration.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: :any
end
end
Run Code Online (Sandbox Code Playgroud)
我可以通过卷曲调用确认标题是否存在:
$ curl -I https://viewing.nyc -H "Origin: https://foobar.com"
...
Access-Control-Allow-Origin: https://foobar.com
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Max-Age: 1728000
...
Run Code Online (Sandbox Code Playgroud)
如果您访问Chrome或Firefox,控制台中没有跨站点脚本错误,但在Safari上,有数千个错误.
Blocked a frame with origin "https://googleads.g.doubleclick.net" from accessing a frame with origin "https://viewing.nyc". Protocols, domains, and ports must match.
Run Code Online (Sandbox Code Playgroud)
rack-cors到目前为止,我已经完成了问题页面,没有解决方案.为什么这只发生在Safari上,我该如何解决?
我是一个基于画布的FB应用程序.面对Chrome和Firefox上的问题,(虽然通常是Chrome):
1.当我在新的隐身Chrome窗口(https://apps.facebook.com/myfbappnamespace/)上点击我的已批准的fb应用安全网址时,以下错误仅在第一次出现,当我刷新页面时出现错误走了(大部分时间)
页面大约:空白显示来自http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b的不安全内容 ... os.com%2Ff4aeadb2&domain = www.mydomain.com&relation = parent&error =未知用户.
不安全的JavaScript尝试与URL访问框架 http://www.mydomain.com/control/myfacebookapp/从框架与URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb= f2e4fe7b ... os.com%2Ff4aeadb2&domain = www.mydomain.com&relation = parent&error = unknown_user.请求访问的框架将'document.domain'设置为'facebook.com',但正在访问的框架没有.两者都必须将'document.domain'设置为相同的值才能允许访问.
xd_arbiter.php:18不安全的JavaScript尝试与URL访问框架 http://www.mydomain.com/control/myfacebookapp/从框架与URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb= f2e4fe7b ... os.com%2Ff4aeadb2&domain = www.mydomain.com&relation = parent&error = unknown_user.请求访问的框架将'document.domain'设置为'facebook.com',但正在访问的框架没有.两者都必须将'document.domain'设置为相同的值才能允许访问.xd_arbiter.php:18
2.当我尝试http url(http://apps.facebook.com/myfbappnamespace/)时,控制台中显示的错误是:
不安全的JavaScript尝试与URL访问框架 http://apps.facebook.com/myfbappnamespace/从框架与URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= ... F控制%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26.请求访问的帧具有"https"协议,被访问的帧具有"http"协议.协议必须匹配.
现在,当我登录到我的fb帐户以查看这些错误会发生什么时,它们会消失,有时只会消失.我知道我在查询中使用"大部分时间"和"有时",但这正是我发生的事情.我也搜索了论坛并意识到fb已经修复了这个本来应该是特定于chrome的问题.我确保我的FB.init和其他调用是location.protocol值特定的.还在canvas url(http)和安全canvas url(https)中配置了正确的值.还尝试了两种设置:帐户设置 - >安全 - >安全浏览 - >(已启用和已禁用)
如果我在某处丢失某些东西,有人可以帮忙吗?
突然开始给出这个错误:
通过原点"http://*****.com"访问具有原点" http://static.ak.facebook.com "的框架.请求访问的框架将"document.domain"设置为"facebook.com",但正在访问的框架没有.两者都必须将"document.domain"设置为相同的值才能允许访问.
javascript ×4
cross-domain ×2
facebook ×2
adsense ×1
cors ×1
http ×1
https ×1
iframe ×1
jquery ×1