Как установить cookie для другого домена - PullRequest
132 голосов
/ 20 июля 2011

Скажем, у меня есть веб-сайт с именем a.com, и когда загружается определенная страница этого сайта, скажем, ссылка на страницу, я хочу установить файл cookie для другого сайта с именем b.com, а затем перенаправить пользователя на b.com ,

Я имею в виду, при загрузке a.com/link Я хочу установить cookie для b.com и перенаправить пользователя на b.com.

Я протестировал его, и браузер фактически получил cookie от a.com/link, но он не отправил этот файл cookie в запросе на перенаправление на b.com. Это нормально?

Можем ли мы установить файлы cookie для других доменов?

Ответы [ 8 ]

104 голосов
/ 20 июля 2011

Вы не можете установить куки для другого домена.Это может привести к огромным ошибкам в безопасности.

Вам нужно получить b.com, чтобы установить cookie.Если a.com перенаправит пользователя на b.com/setcookie.php?c=value

Сценарий setcookie может содержать следующее, чтобы установить cookie и перенаправить на нужную страницу на b.com

<?php
    setcookie('a', $_GET['c']);
    header("Location: b.com/landingpage.php");
?>
45 голосов
/ 27 октября 2015

Аналогично верхнему ответу, но вместо перенаправления на страницу и обратно, что приведет к ухудшению работы пользователя, вы можете установить изображение в домене A.

<img src="http://www.example.com/cookie.php?val=123" style="display:none;">

А затем в домене B, который является example.com в cookie.php, вы получите следующий код:

<?php
    setcookie('a', $_GET['val']);
?>

Подсказка к Субин

14 голосов
/ 01 ноября 2012

Пробалы вы можете использовать для этого Iframe.Facebook, вероятно, использует эту технику.Вы можете прочитать больше об этом здесь .Stackoverflow использует похожую технику, но с локальным хранилищем HTML5, подробнее об этом в их блоге

5 голосов
/ 20 июля 2011

Настройка файлов cookie для другого домена невозможна.

Если вы хотите передать данные в другой домен, вы можете закодировать это в URL.

a.com  ->  b.com/redirect?info=some+info (and set cookie) -> b.com/other+page
4 голосов
/ 20 июля 2011

Вы не можете.Это было бы опасно для безопасности.

3 голосов
/ 13 июня 2017

см. RFC6265 :

Пользовательский агент будет отклонять куки, если только атрибут Domain определяет область для куки, которая будет включать в себя источник сервер. Например, пользовательский агент примет файл cookie с Атрибут домена "example.com" или "foo.example.com" из foo.example.com, но пользовательский агент не примет файл cookie с Атрибут домена "bar.example.com" или "baz.foo.example.com".

ПРИМЕЧАНИЕ. В целях безопасности многие пользовательские агенты настроены на отклонение Атрибуты домена, которые соответствуют «общедоступным суффиксам». Например, некоторые пользовательские агенты отклоняют атрибуты домена «com» ​​или «co.uk». (Подробнее см. В разделе 5.3.)

Но вышеупомянутый обходной путь с image / iframe работает, хотя это не рекомендуется из-за его небезопасности.

2 голосов
/ 19 октября 2016

Если у вас есть a.my-company.com и b.my-company.com вместо просто a.com и b.com, вы можете создать cookie для домена .my-company.com - он будет принят и отправлен на оба домена.

0 голосов
/ 09 апреля 2018

Вы не можете, но ... Если у вас есть обе страницы, тогда ...

1) Вы можете отправить данные через параметры запроса (http://siteB.com/?key=value)

2) Вы можете создать iframe сайта B внутри сайта A и отправлять сообщения из одного места в другое. Поскольку сайт B является владельцем файлов cookie сайта B, он сможет установить любое необходимое вам значение, обработав правильное почтовое сообщение. (Вы должны запретить другим нежелательным отправителям отправлять вам сообщения! Это зависит от вас и от механизма, который вы решите использовать, чтобы этого не происходило)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...