2012-01-02 1 views
1

Je veux mettre pixel de suivi sur le fichier html 3ème partie, qui appellera une servlet qui retournera javascript. Ce javascript devrait obtenir une valeur du stockage local et le signaler à une autre servlet. Par exemple:est le pixel de suivi peut exécuter javascript à partir du serveur distant?

pixels invisibles:

<img src="http://myserver.com/report" width="1" height="1"> 

Le servlet rapport renverra le javascript suivant:

var value= localStorage.getItem("myLocalStorageKey"); 
var serverUrl = "www.myserver.com/myservlet?value=" + value; 
var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("GET", serverUrl, true); 
xmlHttp.send(""); 

Cela ne fonctionne pas parce que la propriété src est pas besoin de gérer javascript. Est-ce que je peux y arriver? Si le javascript est appelé à partir de la page html tierce, il ne sera pas en mesure d'obtenir la valeur du stockage local, car la valeur a été entrée à partir du domaine "myserver.com" et non du domaine tiers.

Une idée ???

Merci, Dani

+0

Les mêmes stratégies de sécurité d'origine sont conçues pour arrêter exactement ce que vous faites: d'autres domaines qui espionnent les propriétés locales qui ne sont pas censées être disponibles pour ces autres domaines. – jfriend00

Répondre

3

Il ne fonctionnera pas, période. Javascrsipt a une politique de sécurité 'même origine' pour xmlhttprequests. La source de ce script serait VOTRE serveur, donc il ne peut pas contacter un autre serveur SAUF le vôtre.

Vous pouvez contourner un peu en utilisant JSONP à la place, qui construit dynamiquement/insère une balise/code mis en DOM la page <script>...</script> complète, mais vous êtes toujours bloqué avec le fait que vous chargez ce via un <img> tag, qui ne va pas exécuter le code de toute façon.

Au lieu de cela, envisager de faire quelque chose comme

<script type="text/javascript" src="http://yourserver/track_me.js"></script> 

et servir le code jsonp-création avec ce script.

+0

S'il contrôle la façon dont le pixel de suivi est injecté, il pourrait peut-être injecter le tag de script à la place. –

+0

Si j'appelle le script avec src = "http: //yourserver/track_me.js", est le javascript qui sera exécuté sur le domaine "yourserver" ou sur le domaine de la page html? En d'autres termes, le javascript sera-t-il capable de récupérer des valeurs du stockage local entrées par le domaine "yourserver"? – user686098

+0

JS s'exécute toujours localement, mais avec les droits/autorisations du serveur d'origine. Si vous chargez le fichier js depuis votre serveur, il peut faire n'importe quoi avec des données provenant également de votre serveur. S'il est chargé à partir d'un autre serveur, il ne peut pas toucher du tout les données de votre serveur. –

Questions connexes