Вы не можете установить cookie-файлы для нескольких доменов по умолчанию. Я полагаю, вы можете настроить файл (ы) P3P, чтобы включить его. http://p3ptoolbox.org/guide/section4.shtml#IVd
Я сам этого не делал, поэтому не знаю, сколько браузеров его реализуют или даже так работает.
Вирб выглядит так, будто использует только JavaScript. Он имеет библиотеку AJAX, которая отправляет запрос JSON-P на сервер virb, если файл cookie сеанса не установлен. (при первой загрузке Firefox вы можете увидеть это в Firebug) Ответ JSON просто сообщает странице, вошел ли пользователь в систему или нет, и обновляет части страницы, которые должны отражать статус пользователя.
Итак, что происходит, так это то, что на странице есть JS с virb.com. Поскольку домен - это virb.com, файлы cookie, установленные как virb.com, отправляются на сервер. Затем сервер отвечает результатом cookie на внешний сайт.
В случае virb, который не будет работать должным образом без JS, я думаю, это хороший вариант. Однако вы можете сделать то же самое с HTTP Redirects.
Если хост HTTP не является основным доменом (example.com):
if (!$_COOKIE['sessionid'] && $_SERVER['HTTP_HOST'] != 'example.com') {
// redirect to your main site
header('Location: http://example.com');
}
На главном сайте установите cookie и отправьте пользователя обратно на внешний домен (domain.com), передав идентификатор сеанса в Location.
header('Location: http://domain.com.com?sessid='.urlencode($_COOKIE['sessionid']));
Последний бит - это перенаправление на страницу, на которой вы были сейчас, когда у вас идет тот же сеанс.
setCookie(...); // sessid in $_GET['sessid']
header('Location: http://domain.com/');
Обратите внимание, что на самом деле вы можете отправить страницу, на которой вы сейчас находитесь, обратно на example.com на первом этапе, чтобы вы могли перенаправить ее обратно позже.
Поскольку вы просто используете заголовки (вам не нужно выводить контент) и в большинстве случаев HTTP / 1.1, поэтому вы будете использовать тот же сокет TCP, я думаю, что он довольно эффективен и будет более поддерживаться, чем JavaScript вариант.
Редактировать: не забудьте установить cookie, когда вы вернетесь во внешний домен.
Последний шаг не является обязательным, но он не позволяет sessid находиться в URL. Что является большей проблемой безопасности, чем сохранение его в заголовках HTTP.