XMLHttpRequest interdomaines à l'aide de pages d'arrière-plan
Dans mon extension Chrome, je veux avoir mon options.html
page de communiquer avec quelque chose comme OpenId de Google API. Pour ce faire, en toute transparence, j'ai caché iframe
sur les options de la page qui apparaîtra dans les Comptes Google, la page de connexion (à la suite de l'OpenId interaction séquence, etc.).
Mon problème est que je ne peux pas communiquer à partir de la page options de l' iframe
(l'origine de la iframe
est quelque chose que je contrôle, mais pas le même que mon extension chrome) via window.postMessage
. Je me demandais si il ya une solution rapide à ce problème.
Si il n'y en a pas, je vais faire options.html
contenir un iframe
que les maisons de la mise en page et la logique de la page.
source d'informationauteur yuzeh
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas à jouer avec les iframes. Il est possible d'effectuer des XMLHttpRequests entre les domaines, à l'aide de pages d'arrière-plan. Depuis Chrome 13, cross-site des demandes peuvent être faites à partir du contenu du script. Toutefois, les demandes peuvent encore échouer si la page est servi avec un Contenu Politique de Sécurité de l'en-tête avec une restriction de
connectez-src
.Une autre raison du choix de la nexy méthode sur le contenu des scripts est que les demandes de sites http, va provoquer un contenu mixte d'avertissement ("La page à l'adresse https://... affiche un contenu non sécurisé à partir de http://...").
Encore une autre raison pour la délégation de la demande pour la page d'arrière-plan, c'est quand vous voulez obtenir une ressource de la
file://
parce qu'un contenu script ne peut pas lire à partir defile:
sauf si elle est en cours d'exécution sur une page à lafile://
régime.Cross-site request à l'aide de fond de script.
Le contenu du script demande de la fonctionnalité de l'arrière-plan via le messagerie API. Voici un exemple d'une façon très simple d'envoi et d'obtenir la réponse à une demande.
Arrière-plan /l'événement page:
Remarque: L'Api de messagerie ont été renommés à plusieurs reprises. Si votre navigateur cible n'est pas la dernière version de Chrome, découvrez cette réponse.
Pour être complet, voici un manifeste fichier essayer mon démo:
J'ai mis en place la même chose à l'aide de jquery, il est beaucoup plus simple et il a travaillé beaucoup trop..
background.js
contentscript.js
Mais assurez-vous que le manifeste.fichier json dispose des autorisations et jquery js fichier