Cookie и поддомены

12
T
На сайте с 11.08.2005
Offline
181
#11
Emotion_schemer:

На сайте есть форма, которая через аякс передается в скрипт domain.ru/script.php
Авторизация везде проходит корректно, но если авторизация проходит поддомене, то куки остаются пустыми.

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

Вам все толонят, что кука ставится с субдомена и доступна для домена, а прислушиваться или нет - дело Ваше...

siv1987
На сайте с 02.04.2009
Offline
427
#12
Emotion_schemer:
Кука остается пустой везде.
При тех же действиях на основном домене кука доступна везде, и на поддоменах.

Так пустой или "недоступной" это все таки две разные вещи. Она может объявлена но "пустой", или не объявлена но с тем же результатом. Проверять лучше надо, и дебажить лучше всего когда она устанавливается клиенту.

Emotion_schemer:
На сайте есть форма, которая через аякс передается в скрипт domain.ru/script.php

Я точно не уверен, но почитайте как на всякий случай политику безопасности касательно поддоменых аякс запросов.

[Удален]
#13
siv1987:
Так пустой или "недоступной" это все таки две разные вещи. Она может объявлена но "пустой", или не объявлена но с тем же результатом. Проверять лучше надо, и дебажить лучше всего когда она устанавливается клиенту.


Я точно не уверен, но почитайте как на всякий случай политику безопасности касательно поддоменых аякс запросов.

С аяксом вопросов нет, все работает, это уже наладил.

Авторизация проходит успешно, но куки остаются НЕДОСТУПНЫМИ.

SocFishing
На сайте с 26.09.2013
Offline
118
#14

я немного ошибся. вместо минуса + конечно же

setcookie("auth", "test", time()+360*24, ".domain.com");

Наверно понимаю вашу проблему. Скрипт с сабдомена не сможет получить куку с корневого домена, для этого при авторизации пишите куку и с точкой и без. Так корневой домен сможет залогинить и сабдомен.

Возможно решение будет в костыле. С сабдомена грузите скрипт корневого, который запишет кук на корневом домене.

Покажите пример, такой вот файл на сабдомен и на корневом

test.php

setcookie("authtest", "test", time()+360*24, "domain.com");
setcookie("authtest2", "test2", time()+360*24, ".domain.com");
echo $_COOKIE['authtest'].":".$_COOKIE['authtest2'];
★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
[Удален]
#15
SocFishing:

Возможно решение будет в костыле. С сабдомена грузите скрипт корневого, который запишет кук на корневом домене.

Скрипт и так в корне лежит, к нему через аякс обращение идет. Я так понимаю в этом и есть проблема, а не ее решение. Типа в разных доменах лежат скрипт и пользователь. У меня в этом опыта не много, тут нужен кто-то матерый, кто знает поведение куков из опыта.

Самое простое решение, сделать форму авторизации через iframe, но хотелось бы без этого

SocFishing
На сайте с 26.09.2013
Offline
118
#16

Записать с сабдомена должно в корневой. А вот считать может и не считать.

Вот для этого и надо записать и в корень и в сабдомен. Сабдомен будет получать с .domain.com, а корневой с domain.com при проверке кук.

Если хотите расшарить куки на чтение с корневого и запросить их например js ajax или get, то надо в скрипте domain.com/auth.php вписать заголовок

header("p3p: CP=ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV");

вроде бы такой.

L
На сайте с 07.12.2007
Offline
351
#17

Emotion_schemer, браузер у Вас какой? В некоторых по умолчанию стоят галочки «Сookies: Принимать только с посещаемого сайта» (Opera) и «Принимать cookies: Только от посещаемых сайтов» (Safari).

У FF 22-го релиза - тоже новая политика в отношении cookie.

И куки test.example.com будут доступны на example.com(основной домен), но не на mail.example.com(другой поддомен). То есть, садить куку надо на основном домене (куку с .), тогда она будет доступна на всех поддоменах.

PS: Не пробовали более современные технологии (localStorage и IE userData), evercookie или кроссдоменные запросы, в тч AJAX?

[Удален]
#18
Ladycharm:
Emotion_schemer, браузер у Вас какой? В некоторых по умолчанию стоят галочки «Сookies: Принимать только с посещаемого сайта» (Opera) и «Принимать cookies: Только от посещаемых сайтов» (Safari).

У FF 22-го релиза - тоже новая политика в отношении cookie.

И куки test.example.com будут доступны на example.com(основной домен), но не на mail.example.com(другой поддомен). То есть, садить куку надо на основном домене (куку с .), тогда она будет доступна на всех поддоменах.

PS: Не пробовали более современные технологии (localStorage и IE userData), evercookie или кроссдоменные запросы, в тч AJAX?

Спасибо огромное за ссылки, изучу. Кроссдоменные запросы налажены, но для куков это ничего не дает. В моем случае думаю сделаю iframe, это решение кажется самым надежным, будет нормальный "здоровый кук без ГМО" + позволит упростить еще несколько скриптов в том месте.

P.S. Ссылки уже глянул - это офигенно! Но в моем случае надо банально запомнить авторизацию. Для инет-магазинов такие методы то, что нужно!

L
На сайте с 07.12.2007
Offline
351
#19
Emotion_schemer:
iframe, это решение кажется самым надежным, будет нормальный "здоровый кук без ГМО"

На javascript.ru пишут, что если отправлять в iframe POST-запрос, то даже Safari принимает 3rd party cookies.

Для "мульти-поддоменной" авторизации, похоже, придётся либо редиректить через основной домен, либо этот основной домен открывать в iframe.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий