Создать cookie с кросс-доменом - PullRequest
3 голосов
/ 05 марта 2012

Я работаю над куки. Я могу создавать куки очень легко. Для создания файла cookie я использую этот код:

HttpCookie aCookie = new HttpCookie("Cookie name");
aCookie.Value = "Value";
Response.Cookies.Add(aCookie); 

Этот код подходит мне и дает мне localhost в качестве хоста. Но проблема возникает здесь, когда я пытаюсь добавить здесь доменное имя, например:

HttpCookie aCookie = new HttpCookie("Cookie name");
aCookie.Value = "Value";
aCookie.Domain = "192.168.0.11";
Response.Cookies.Add(aCookie); 

Теперь cookie не генерируется. Есть предложения?

Ответы [ 3 ]

11 голосов
/ 05 марта 2012

Вы можете установить домен только для себя (текущий сайт) и дочерние домены из соображений безопасности.Вы не можете установить куки для произвольных сайтов.

2 голосов
/ 05 марта 2012

Как сказал Марк - ты не можешь этого сделать; если домен не является поддоменом домена, возвращающего ответ.

То же ограничение применяется к коду javascript на клиенте, который также добавляет файлы cookie - будет применяться та же политика происхождения.

Простой способ добиться этого, как правило, включать на странице, возвращаемой из abc.com где-нибудь, ссылку на ресурс в домене xyz.com - обычно это файл javascript или что-то в этом роде.

Вы должны быть осторожны, потому что это сторонние файлы cookie, и некоторые пользователи отключают их (потому что так работает отслеживание рекламы).

0 голосов
/ 28 марта 2017

Предполагая, что у вас есть известный набор файлов cookie, которые вы хотите отслеживать между доменами, и что вы являетесь владельцем всех доменов, с которыми вы используете файлы cookie, вы можете создать эту функцию самостоятельно. Вот междоменное отслеживание печенья бедного человека:

Вы можете добавить «? FavourColor = red» к всем ссылкам на abc.com, которые указывают на xyz.com.

<a href="xyz.com/contact?favoriteColor=red">XYZ Contact</a>

Затем сделайте то же самое для всех ссылок на xyz.com, которые указывают на abc.com.

<a href="abc.com/contact?favoriteColor=red">ABC Contact</a>

Теперь на каждой странице abc.com и xyz.com необходимо проверить путь http-запроса для? FavourColor = red и, если он существует, установить cookie для favourColor в этом домене на красный.

// Pseudocode
if(queryString["favoriteColor"] != null) {
    setCookie("favoriteColor", queryString["favoriteColor"]);
}

Совет 1: Проведите некоторую проверку, чтобы убедиться, что полученное значение действительно, поскольку пользователи могут вводить что угодно.

Совет 2: Если вы собираетесь это сделать, вы должны использовать https.

Совет 3. Убедитесь, что в URL-адресе не указано имя и значение файла cookie.

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