такое пиксель отслеживания может выполнять JavaScript с удаленного сервера? - PullRequest
1 голос
/ 02 января 2012

Я хочу поместить отслеживающий пиксель в сторонний html-файл, который вызовет сервлет, который вернет javascript. Этот javascript должен получить значение из локального хранилища и сообщить об этом другому сервлету. Например:

Пиксель отслеживания:

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

Сервлет отчета вернет следующий javascript:

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

Это не работает, потому что свойство src не должно обрабатывать javascript. Есть ли способ, которым я могу сделать это? Если javascript будет вызываться со сторонней html-страницы, он не сможет получить значение из локального хранилища, поскольку оно было введено из домена "myserver.com", а не из домена стороннего производителя.

Есть идеи ???

Спасибо, Dani

1 Ответ

3 голосов
/ 02 января 2012

Это не сработает, точка. Javascrsipt имеет политику безопасности «того же источника» для xmlhttprequests. Источником этого скрипта будет ваш сервер, поэтому он не может связаться ни с каким другим сервером, кроме вашего.

Вы можете обойти это, используя вместо этого JSONP, который динамически создает / вставляет полный набор тегов / кодов <script>...</script> в DOM страницы, но затем вы все еще застряли с тем фактом, что вы загружаете это через <img> тег, который не будет выполнять код в любом случае.

Вместо этого подумайте над тем, чтобы сделать что-то вроде

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

и обработайте код создания jsonp с помощью этого скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...