Из соображений безопасности нельзя читать/писать куки из другого домена (вопрос о поддоменах одного домена и свойстве 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