Sono curioso di sapere se il seguente scenario è un bug in Chrome, che funziona come previsto o un errore dello sviluppatore.Iniezione di script di contenuto e richiesta di permessi di origine incrociata
Quindi, ho un'estensione. Nella sua manifest.json chiedo autorizzazioni tra origine per due siti:
"permissions": [
"http://www.foo.com/*",
"http://www.bar.com/*"
]
Dichiaro inoltre uno script contenuto:
"content_scripts": [
{
"matches": ["http://www.foo.com/*"],
"js": ["injectedScript.js"]
}
]
Così, ho indicato che vorrei per iniettare "injectedScript .js "in tutti i domini di foo.com. "InjectedScript.js" sembra qualcosa di simile:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handleStateChange; // Implemented elsewhere.
xhr.open("GET", 'http://www.bar.com/123'), true);
xhr.send();
Ora, un IFRAME viene aggiunto alla pagina del mio Chrome Extension. Ecco come si presenta: src
<iframe src="http://www.foo.com/123"></iframe>
di questa struttura soddisfa il mio modello di script contenuti. In quanto tale, quando viene caricato il frame, viene iniettato injectedScript.js. Ma la XMLHttpRequest all'interno di injectedScript ha esito negativo.
Ora, questo mi fa chiedere quale sia il comportamento previsto. È frustrante riscontrare problemi CORS quando ho richiesto le autorizzazioni appropriate ... ma posso anche capire che sto tentando di accedere a "http://www.bar.com/123" da un'origine esterna alla mia chrome-extension ... anche se un iframe è stato caricato nell'estensione di cui ho il permesso di accesso.
Qualche idea da qualcuno in merito?
EDIT: Se vi state chiedendo che cosa potrei essere sempre a da un punto di vista pratico - vorrei per iniettare alcuni javascript che può chiamare getImageData su un video nella pagina iniettato. Tuttavia, non posso, perché getImageData pensa che i dati src del video siano corrotti. Ho richiesto le autorizzazioni appropriate, ma non rientra nell'iframe.
UPDATE: Ecco una foto: http://i.imgur.com/PR48HO2.png
Sono di fronte allo stesso problema. So che hai capito qual è la causa e l'hai indirizzata nella tua (sfortunata) estensione. Potresti condividere la soluzione (magari aggiungendo una risposta tu stesso)? –