Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SCORM:SecurityError:阻止具有原点的帧访问同一原点的跨原点帧_Javascript_Iframe_Cross Domain_Same Origin Policy_Scorm - Fatal编程技术网

Javascript SCORM:SecurityError:阻止具有原点的帧访问同一原点的跨原点帧

Javascript SCORM:SecurityError:阻止具有原点的帧访问同一原点的跨原点帧,javascript,iframe,cross-domain,same-origin-policy,scorm,Javascript,Iframe,Cross Domain,Same Origin Policy,Scorm,我知道有很多类似的问题,唯一的区别是我从**同一**域提供的两个页面中得到了这个问题。这可以在下面的示例中看到 Uncaught DOMException: Blocked a frame with origin "https://content.samba.net" from accessing a cross-origin frame. at findAPI (https://content.samba.net/00/07/19-10/scorm_supp

我知道有很多类似的问题,唯一的区别是我从**同一**域提供的两个页面中得到了这个问题。这可以在下面的示例中看到

    Uncaught DOMException: Blocked a frame with origin "https://content.samba.net" from accessing a cross-origin frame. 
  
at findAPI (https://content.samba.net/00/07/19-10/scorm_support/scorm_support.js:14:10)   
at getAPI (https://content.samba.net/00/07/19-10/scorm_support/scorm_support.js:61:13)   
at https://content.samba.net/00/07/19-10/SCORM.htm:200:16
这不应该只在不同的域之间发生吗

====================================================================================================
当然,在我发帖几秒钟后,我发现了这个问题。SCORM包有一个定位SCORM API的函数。它看起来像顶部和开瓶器。在我的例子中,Window Opener位于不同的域中,它试图访问该域。

看在历史的份上,我就不谈了。我的答案中有详细信息。

问题已经解决,并且是针对SCORM协议的。
当您打开一段SCORM内容时,它是一组html、flash、js和其他媒体文件,它所做的第一件事就是试图找到SCORM api。
SCORM api是JS,必须位于加载SCORM内容的窗口中。
在某些SCORM包中,查找API的函数递归查找顶部窗口,即启动整个过程的初始窗口。
在我的例子中,是我网站上的一个窗口在我的CDN上弹出了SCORM启动器,它有一个不同的域名

为了解决这个问题,我所要做的就是通过添加以下两行js来欺骗浏览器,使其认为SCORM启动器(我在CDN上弹出的窗口)是顶部:

window.top=window;
window.opener=window;

如果iframe具有
沙盒
属性,请尝试将
允许相同原点
添加到该值。原因是,如果不包括
允许相同来源
,浏览器会将iframe的来源设置为null,并且来自
https://content.samba.net
对空原点的请求是跨原点请求。在和上查看答案,要了解更多详细信息,请参阅@sideshowbarker,这很有趣,但我的问题实际上更为琐碎和简单-我编辑了我的问题以反映它。尝试在我的父页面上添加此内容似乎不起作用,但仍然得到相同的结果issue@oma0256它们是同一个域吗?父页面和SCORM窗口?没有不同domains@oma0256我相信(尽管可能有办法)保存SCORM API的窗口必须与内容位于同一个域上——这就是我的做法。