2010-08-12 18 views
0

Je développe un service API JavaScript. La page html principale ressemble à ceci:Problème de javascript inter-site

<html> 
<head> 
    <script type="text/javascript" src="scripts/logic.js"></script> 
    <script type="text/javascript" src="scripts/jquery-1..."></script> 
    <script type="text/javascript" src="http://mydomain/api/main.js"></script> 
</head> 
... 
</html> 

Dans le script main.js, je charge un autre script de mydomain. Je le fais en ajoutant une balise de script ([script .. src = "http: //mondomaine/api/getsomedata.js? Callback_id = 3434 & someparams = ..."]). Le script chargé appelle immédiatement la fonction de rappel de l'API: MyApi.processCallback (...). Tout fonctionne bien.

Mais lorsque j'essaie de charger un autre script mydomain à partir d'un fichier local (logic.js), je vois une situation très étrange: tous les objets globaux du script ne sont pas définis. Il n'y a pas d'objet MyApi ou d'objet jQuery $ visibles lors de l'appel précédent. Je ne peux donc pas appeler la fonction de rappel MyApi. Peut-être que c'est à cause de restrictions de sécurité. Anti-XSS, ou quelque chose de similaire. J'ai essayé d'ajouter un en-tête X-XSS-Protection, comme dans toutes les API JavaScript de Google. Mais cela n'a pas aidé.

Je n'utilise pas d'IFRAMES.

Le problème peut être résolu exactement, car de nombreuses API JavaScript inter-sites fonctionnent (API Google Maps, etc.) sur la même idée.

Répondre

0

Que se passe-t-il dans votre script?

Si vous effectuez des appels Ajax dans le domaine, votre script échouera avec une erreur de sécurité de même origine. Si vous devez communiquer avec votre serveur depuis un autre domaine, vous devez utiliser JSONP pour le faire. Si vous travaillez uniquement avec un navigateur moderne, vous pouvez vous en sortir avec CORS.