3 votes

SCORM : SecurityError : Bloqué un cadre avec origine d'accéder à un cadre d'origine croisée POUR LA MÊME ORIGINE

Je suis conscient qu'il y a beaucoup de questions similaires, la seule différence est que j'obtiens ceci pour deux pages que je sers à partir du **même ** domaine. Cela peut être vu dans l'exemple ci-dessous.

    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

Cela ne devrait-il pas se produire uniquement entre des domaines différents ?

\============================== EDIT =======================================
Bien sûr, quelques secondes après avoir posté, j'ai trouvé le problème. Le paquet SCORM possède une fonction permettant de localiser l'API SCORM. Il regarde le haut et l'ouvreur. Dans mon cas, l'ouvreur de fenêtre est dans un domaine différent, il a essayé d'y accéder.
Je vais le laisser pour l'histoire. Ma réponse contient les détails.

1voto

Itay Moav -Malimovka Points 17977

Le problème a été résolu, et il est spécifique au protocole SCORM.
Lorsque vous ouvrez un élément de contenu SCORM, qui est un ensemble de fichiers html, flash, js et autres fichiers multimédias, la première chose qu'il fait est d'essayer de trouver l'api SCORM.
L'api SCORM est un JS qui doit se trouver dans la fenêtre qui charge le contenu SCORM.
Dans certains paquets SCORM, la fonction qui recherche l'API recherche récursivement la fenêtre TOP, c'est-à-dire la fenêtre initiale qui a lancé tout le processus.
Dans mon cas, il s'agissait d'une fenêtre sur mon site, qui faisait apparaître le lanceur SCORM sur mon CDN, qui a un nom de domaine différent.

Tout ce que j'ai eu à faire pour résoudre ce problème, c'est de tromper le navigateur pour qu'il pense que le lanceur SCORM (la fenêtre que j'ai fait apparaître sur le CDN) est le TOP, en ajoutant les deux lignes js suivantes dans celui-ci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X