Как установить cookie для другого домена
Скажем, у меня есть сайт под названием a.com
, и когда загружается конкретная страница этого сайта, скажите ссылку на ссылку, мне нравится устанавливать cookie для другого сайта под названием b.com
, а затем перенаправлять пользователя на b.com
,
Я имею в виду, что при загрузке a.com/link
я хочу установить cookie для b.com
и перенаправить пользователя на b.com
.
Я протестировал его, и браузер действительно получил cookie от a.com/link
, но он не отправил этот файл cookie в запрос перенаправления на b.com
. Это нормально?
Можно ли установить файлы cookie для других доменов?
Ответы
Ответ 1
Вы не можете установить файлы cookie для другого домена. Это может привести к огромному недостатку безопасности.
Вам нужно, чтобы b.com установил cookie. Если a.com перенаправляет пользователя на b.com/setcookie.php?c=value
Узел setcookie script может содержать следующее, чтобы установить cookie и перенаправить на правильную страницу на b.com
<?php
setcookie('a', $_GET['c']);
header("Location: b.com/landingpage.php");
?>
Ответ 2
Подобно верхнему ответу, но вместо перенаправления на страницу и обратно, что может вызвать плохой пользовательский интерфейс, вы можете установить изображение в домене A.
<img src="http://www.example.com/cookie.php?val=123" style="display:none;">
А затем в домене B, который является example.com в файле cookie.php, вы получите следующий код:
<?php
setcookie('a', $_GET['val']);
?>
Hattip в Subin
Ответ 3
Пробали, вы можете использовать Iframe
для этого. Facebook, вероятно, использует эту технику. Здесь вы можете прочитать подробнее . Stackoverflow использует подобную технику, но с локальным хранилищем HTML5, более подробно об этом на blog
Ответ 4
Вы не можете. Это будет неприятный риск для безопасности.
Ответ 5
Настройка файлов cookie для другого домена невозможна.
Если вы хотите передать данные в другой домен, вы можете закодировать это в URL.
a.com -> b.com/redirect?info=some+info (and set cookie) -> b.com/other+page
Ответ 6
Если у вас есть a.my-company.com
и b.my-company.com
вместо a.com
и b.com
, вы можете выпустить cookie для домена .my-company.com
- он будет принят и отправлен в оба домена.
Ответ 7
см. RFC6265:
Пользовательский агент будет отклонять файлы cookie, если атрибут домена определяет область для файла cookie, которая будет включать начало сервер. Например, пользовательский агент принимает cookie с Атрибут домена "example.com" или "foo.example.com" из foo.example.com, но пользовательский агент не примет cookie с Атрибут домена "bar.example.com" или "baz.foo.example.com".
ПРИМЕЧАНИЕ. Из соображений безопасности многие пользовательские агенты настроены на отклонение Атрибуты домена, которые соответствуют "общедоступным суффиксам". Например, некоторые пользовательские агенты будут отклонять атрибуты домена "com" или "co.uk". (См. Раздел 5.3 для получения дополнительной информации.)
Но вышеупомянутое обходное решение с изображением /iframe работает, хотя оно не рекомендуется из-за его неуверенности.
Ответ 8
Вы не можете, но... Если у вас есть обе страницы, то...
1) Вы можете отправить данные с помощью параметров запроса (http://siteB.com/?key=value)
2) Вы можете создать iframe сайта B внутри сайта A, и вы можете отправлять сообщения с одного места на другое. Поскольку сайт B является владельцем куки файлов сайта B, он сможет установить любое значение, необходимое для обработки правильного сообщения. (Вы должны запретить другим нежелательным отправителям отправлять вам сообщения! Это зависит от вас и от механизма, который вы решите использовать, чтобы этого не произошло)