Как установить 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, он сможет установить любое значение, необходимое для обработки правильного сообщения. (Вы должны запретить другим нежелательным отправителям отправлять вам сообщения! Это зависит от вас и от механизма, который вы решите использовать, чтобы этого не произошло)