Question

Comment contourner ce problème de script intersite Ajax sur FireFox 3 ?

Était-ce utile?

La solution

Si vous utilisez jQuery, il dispose d'une fonction de rappel pour résoudre ce problème :

http://docs.jquery.com/Ajax/jQuery.ajax#options

À partir de JQuery 1.2, vous pouvez charger des données JSON situées sur un autre domaine si vous spécifiez un rappel JSONP, qui peut être fait comme:"monurl?callback=?".jQuery remplace automatiquement le ?Avec le nom de méthode correct à appeler, appelez votre rappel spécifié.Ou, si vous définissez le type de données sur "JSONP", un rappel sera automatiquement ajouté à votre demande AJAX.

Alternativement, vous pouvez adresser votre requête ajax à un script côté serveur qui effectue l'appel inter-domaines pour vous, puis renvoie les données à votre script.

Autres conseils

Pour mettre à jour la réponse (je suppose, surtout pour mon bénéfice lorsque je chercherai cette réponse plus tard), si vous chargez du XML ou autre chose, vous pouvez toujours demander à l'utilisateur s'il nous autorisera à lire depuis un autre site avec ce code :

try {
    if (netscape.security.PrivilegeManager.enablePrivilege)
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
}

(extrait du livre des services Web RESTful) Mais cela ne fonctionne que dans Firefox, lorsque le fichier HTML est chargé à partir du fichier local.Donc, pas très utile.

Encore une solution :si tout ce dont vous avez besoin, ce sont les en-têtes, vous pouvez spécifier "HEAD" comme méthode et cela ne déclenchera pas le problème de sécurité.Par exemple, si vous souhaitez simplement savoir si la page Web existe.

var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
    alert("can't open web page");

Quelques détails supplémentaires seraient bienvenus :quelle bibliothèque AJAX utilisez-vous, que souhaitez-vous réaliser, comment le faites-vous.

Par exemple, il peut s'agir d'une requête Ajax inter-domaines, ce qui n'est pas autorisé.Dans ce cas, utilisez JSON.

J'ai rencontré ce problème récemment et c'était pendant que j'étais en tant qu'AJAX chargeant la requête locale, pas de problème de script intersite.Jimmy lui-même semble avoir le même problème.Cela semble être le problème de sécurité de FF, cet article décrit le cause et la solution à l'accès à l'uri restreint refusé" code :"Problème 1012.

Désolé, j'ai obtenu cette erreur en utilisant jQuery $ .ajax sur Firefox 3.J'ai essayé la suggestion de JSONP, mais je pense que cela ne fonctionnera qu'avec quelque chose qui servira JSON.J'essaie de créer un échantillon de mashup basé sur le fichier HTML local qui tirera les données de Yahoo! Finance, mais ils servent .csv, donc je pense que je suis sol.– Jimmy Chandra (9 septembre à 17h20)

J'espère que vous le trouverez utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top