es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo permito que una extensión de Chrome acceda a un script de API de terceros?

Estoy intentando acceder a un script de la API de reproductor de YouTube en un iframe para poder reproducir o pausar un video en una extensión de Chrome. Mi JS se muestra a continuación (de apireference>):

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
    player = new YT.Player('video', {
        events: {
            'onReady': onPlayerReady
        }
    });
}
function onPlayerReady(event) {
    player.playVideo();
}

Sin embargo, cuando cargo la extensión en Chrome, obtengo el siguiente error:

Se ha denegado la carga del script ‘https://www.youtube.com/iframe_api’ porque viola la directiva de seguridad de contenido siguiente: “script-src ‘self'”. Se debe tener en cuenta que ‘script-src-elem’ no se estableció explícitamente, por lo que se utiliza ‘script-src’ como alternativa.

Intenté agregar la URL a la CSP en Manifest.json (a continuación). También eliminé todo el JS en línea.

““
“content_security_policy”: “script-src ‘self’ https://www.youtube.com/iframe_api; object-src ‘self'”
“`

Ahora, la extensión falla al cargarse con un error de que mi valor de CSP es inválido. ¿Alguna idea de lo que estoy haciendo mal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con tu archivo de manifiesto es el uso de comillas simples dentro de comillas dobles. Intenta reemplazar las comillas simples con comillas dobles escapadas, así:

    "content_security_policy": "script-src 'self' https://www.youtube.com/iframe_api; object-src 'self'"
    

    Esto debería solucionar el error CSP no válido y permitir que tu extensión cargue correctamente.

Comments are closed.