Допустим есть сайт my-statistic-site.ru который собирает статистику посещений.
Есть сайт site.ru где лежит картинка размером 1х1, а картинка эта размещена на сайте my-statistic-site.ru
Стоит задача: с помощью js, получить значение определенного кукиса созданного сайтом my-statistic-site.ru на сайте site.ru
Доступ к исходникам имеется.
Кончено, можно это решить следующим способом:
1.Сайт my-statistic-site.ru по определенному адресу должен возвращать значение искомого кукиса.
2.Сайт site.ru отправляет кросс-доменный запрос по этому адресу.
Но нет ли другого способа, скажем только средствами JS?
Если правильно понял, так я отправлю куки сайта site.ru на сайт статистики. А мне же нужно наоборот, находясь на сайте site.ru показать пользователю средствами js куки сайта статистики.
«Стоит задача: с помощью js, получить значение определенного кукиса созданного сайтом my-statistic-site.ru на сайте site.ru»
Код задачу исполняет на ура
Как Вы описали задачу, так Вам ее и решили. Вы хотите из сайта my-statistic-site.ru получить доступ к кукам на site.ru при условии что картинка оттуда подключена?
Попробую уточнить, хотя ниже 1nd1go написал, что так не получится, но все же:
1.когда пользователь открывает site.ru, загружается картинка, которая лежит на сайте my-statistic-site.ru
2.Сайт my-statistic-site.ru, когда у него запрашивают картинку, смотрит, есть ли у пользователя кукисы определенные и если нет, то добавляет
Все это надо, для того чтоб сайт my-statistic-site.ru собирал статистику посещений страниц пользователями на сайте site.ru
Но теперь возникла необходимость, показать клиенту на сайте site.ru его уникальный номер, который хранится в кукисах. А кукисы, как было описано в п.2 добавляет сайт my-statistic-site.ru
Вот я и подумал, можно ли достать куки my-statistic-site.ru находясь на сайте site.ru.
С одной стороны с точки зрения безопасности, это должно быть запрещено. Но кросс-доменные запросы то же в каком то смысле запрещены, но если сайт, с которого запрашиваешь(в моем случае my-statistic-site.ru) разрешает это делать, то можно запросить средствами js определенную информацию.
Поэтому подумал, может и здесь есть обходной путь, ведь у меня есть доступ к исходниках обеих сайтов.
psiklop, чтобы что-то получить, нужно это что-то передать. У вас нет прямого доступа к куки стороннего сайта, вы должны их в явном виде взять и отправить, только тогда сможете получить.
Анатолий, я вас не понимаю, что-то мозг не видит решения, видимо мой firefox особенный, в нем срабатывает, но мне то надо, чтобы работало везде.
В смысле отправить в явном виде? Я на своем домене A, когда на него захожу, хочу получить куку своего домена B, которая есть в этом браузере, как ее получить, ткните носом.
psiklop, Если у вас в $_COOKIE нет куков, значит их (уже) нет. У кук есть время жизни, возможно оно истекает. Может вы видите на сайте куки другого домена (в браузере это возможно) а на беке у вас не будет к ним доступа, итд. Я не могу определить в чем проблема не видя ситуации.
находясь на сайте site.ru показать пользователю средствами js куки сайта статистики
Так не получится в связи с политикой безопасности браузеров. Иначе все бы уже насобирали чужих сессий :) Только если ваш тот сайт будет отвечать по опредленному адресу и рефереру (для надежности) информацию из куки.
iframe не подходит, т.к. номер нужно доставать на разных сайтах, соответственно дизайн там будет разный. А так, я зная номер на странице, средствами js могу прописать в нужном месте номер.
Как ни странно, нельзя узнать URL картинки после редиректа, но можно узнать ее размеры!
Что можно сделать? Загрузить гифку или пнгшку высоты в 1 пиксель и ширины в нужное количество :))
тогда номер будет равен img.width :)
По идее такие картинки должны хорошо сжиматься, так что трафик будет не очень большой.
Решение нашлось, хотя я изначально планировал обойтись только средствами js, но пришлось прописать 3 строки в серверном коде. Решение предложил taliban, надо всего лишь на сайте site.ru добавить строку [script src="http://my-statistic-site.ru/scr.js"][/script]
А сайт my-statistic-site.ru, когда запрашивают файл scr.js выдает все время значение кукиса как то так: var findValue='555';
И тогда на сайте site.ru я могу достать значение findValue
Или такой вариант: в ифрейм грузите страницу с другого сайта, тот сайт отдает редирект на первый сайт, в качестве параметра в урл указывается нужная кука. Первый сайт получив такой параметр просто отдает JS-ку со строкой, содержащей эту куку.