@Forman

Как назначить или прочитать cookies с другого моего сайта?

Здравствуйте!

Имеется:
- Сайт №1, который принимает get-параметр "g" с записанным в него значением (напр. ?g=1). Дальше он работает с ним.
- Сайт №2, который должен передать/перезаписать get-параметр "g" с его значением сайту №1.
- Значение get-параметра "g" - публичное и не несет особой ценности, кроме как владельцу сайта.
- Оба сайта расположены на разных доменах, принадлежат одному владельцу и могут находится на одном сервере.
- Пользователь, который заходит на сайт №2 с определенным get-параметром, а потом заходит на сайт №1 уже без него.

Цель: Нужно, чтобы при заходе на сайт №1, в cookies сайта №1 уже были данные get-параметра, с которым пользователь зашел на сайт №2.

Планирую решить проблему с помощью cookies. Но как я нагуглил, назначить куки другому домену, равно как и прочитать куки другого домена - нельзя. Возможно ли прописать какой-то код, который берет get-параметр с сайта №2 и записывает его в куки сайта №1? Напомню, что это не авторизационные данные и их безопасность не важна.

Заранее спасибо за любую помощь!
  • Вопрос задан
  • 7180 просмотров
Решения вопроса 1
@Forman Автор вопроса
Из соображений безопасности нельзя читать/писать куки из другого домена (вопрос о поддоменах одного домена и свойстве domain оставляю на самостоятельное изучение). Но, как и в любом правиле здесь есть исключение. Cross-domain cookies можно сделать если оба домена твои. Под "твои" я подразумеваю что ты сам можешь на них разместить нужные тебе скрипты. Организовать это можно следующим образом. Пишем скрипт, который читает имя куки из реквеста и выдает значение в респонс, еще скрипт, который ставит куку. Теперь на другом домене мы спокойно можем расположить html где при помощи элементов script можем дергать скрипты с другого домена, которые будут читать/писать куки. Html будет лежать в одном домене, а куки дергать мы будем для другого домена.

Вот простейший пример:

setcookie.php:
<?php
    setcookie($_REQUEST["name"], $_REQUEST["value"], time() + 36000);
?>


getcookie.php
<?php
    $cookiename = $_REQUEST["name"];
    echo "alert('" . $cookiename . " = " . $_COOKIE[$cookiename] . "');";
?>


listcookies.php:
<?php
    foreach ($_COOKIE as $name => $value) {
        echo "alert('" . $name . " = " . $value . "');";
    }
?>


testcookies.html
<html>
<head>
<script type="text/javascript">
function listCookies() {
    exec(document.getElementById('scriptsLocation').value + 'listcookies.php?rnd=' + 
        Math.random());
}
function setCookie() {
    exec(document.getElementById('scriptsLocation').value + 'setcookie.php?name=' + 
        document.getElementById('cookieName').value + '&value=' + 
        document.getElementById('cookieValue').value + '&rnd=' + Math.random());
}
function getCookie() {
    exec(document.getElementById('scriptsLocation').value + 'getcookie.php?name=' + 
        document.getElementById('cookieName').value + '&rnd=' + Math.random());
}
function exec(sUrl) {
    var head = document.getElementsByTagName('head').item(0);
    var script = document.createElement('script');
    script.src = sUrl;
    script.type = 'text/javascript';
    script.defer = true;
    void(head.appendChild(script));
}
</script>
</head>
<body>
scripts location on other domain: <input type="text" id="scriptsLocation" value="http://your.other.domain/scripts/location/" /><br />
cookie name: <input type="text" id="cookieName" /><br />
cookie value: <input type="text" id="cookieValue" /><br />
<input type="button" value="Set cookie" onclick="setCookie()" />
<input type="button" value="Get cookie" onclick="getCookie()" />
<input type="button" value="List cookies" onclick="listCookies()" />
</body>
</html>


P.S. Проверять работоспособность конкретного примера в Firefox. IE не хочет динамически грузить скрипты у которых в урле есть параметры. Но если это даже и ограничение IE, то это легко обходится через mod_rewrite.

Источник: rsdn.org/forum/web/1903262.1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SuperNikiforov
вставьте картинку с сайта1 на сайт2 и куку пропишите
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы