Chrome extension de la Croix-Demande de Domaine
Je sais que cela a été parlé plusieurs fois ici, et j'ai lu la plupart de ces fils, mais je n'arrive pas à obtenir mon script de travail.
Problème est que je suis en train d'utiliser bitly api pour raccourcir les url dans google chrome extension. Je suis d'économie de connexion des utilisateurs et apiKey dans localstorage et avant que je le fais je les valider.
Le code pour le faire est:
$.ajax({
url:"http://api.bit.ly/v3/validate",
dataType:'jsonp',
data:{
login: login,
apiKey: apiKey,
x_login :"test",
x_apiKey :"test"
},
success:function (jo, textStatus, jqXHR) {
if (jo.status_code == 200) {
setItem('dg_BitlyApiKey', apiKey);
setItem('dg_BitlyLogin', login);
alert('Saved');
} else {
alert('Incorrect login and/or apiKey!')
}
}
});
J'ai mes autorisations pour "permissions": ["tabs", "notifications", "http://*/*", "https://*/*"]
mais je garde toujours arriver:
Refused to load script from 'http://api.bit.ly/v3/validate?callback=jQuery17204477599645033479_1334062200771&login=&apiKey=&x_login=test&x_apiKey=test&_=1334062201506' because of Content-Security-Policy.
Le script lui-même en dehors de l'extension, donc je suppose que le problème n'est pas dans le script, mais avec les autorisations.
Ce que je fais mal?
OriginalL'auteur Nick | 2012-04-10
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous n'êtes pas vraiment en train de faire une demande XHR, vous êtes en train de faire une requête JSONP sur une insécurité HTTP ressource. Voir la question Comment faire pour charger un JavaScript externe à l'intérieur d'une extension de popup et les Chrome rapport de bug.
JSONP opère par l'ajout dynamique d'une nouvelle balise de script dans votre page et d'exécuter le contenu. Dans votre cas, le script de ressource est récupérée via HTTP (au lieu de HTTPS). Si votre extension utilise la version 2 de l'extension manifeste, ses pages d'arrière-plan ne peut recevoir de non-HTTPS scripts.
Solution: Si vous utilisez le Bitly API via le protocole HTTPS, je crois qui va résoudre votre problème. Envoyez votre appel Ajax de
https://api-ssl.bitly.com/v3/validate
(au lieu de votre valeur actuelle dehttp://api.bit.ly/v3/validate
)OriginalL'auteur apsillers
Vous avez besoin de package de votre application/extension de la croix de domaine de demandes de travail. Une application hébergée ne sera pas en mesure de faire du ski de domaine de demandes de. Voir:
Cross-Origin XMLHttpRequest dans les extensions de chrome
Il doit y avoir une autre erreur. Essayez de faire un exemple minimal, qui se contente de charge régulière de la page html à partir d'un autre site, se débarrasser de la jsonp type de données et vérifier qu'une simple croix de domaine appeler pour obtenir un simple html œuvres.
OriginalL'auteur Marius Kjeldahl