Как записать куки в браузер, чтобы их видно было с другого домена?

Тема в разделе "Как сделать...", создана пользователем gavik, 4 дек 2014.

  1. gavik

    gavik

    Регистр.:
    25 июл 2010
    Сообщения:
    160
    Симпатии:
    14
    Вот такая задачка образовалась:
    1. Есть сайт test1.ru
    2. Есть сайт lending.loc
    3. Мы записываем php скриптом, который храниться на сайте 1 cookie.
    4. Нужно Javascriptom вытащить эти куки, когда пользователь зашел на сайт 2.
    5. Вытащенные cookie нужно отправить Ajax запросом в PHP скрипт на сайте 1.
    Вопрос - почему то Cookie видны только когда пользователь заходит на сайт 1.
    Когда пользователь на сайте 2 - cookie не видно.

    Как записать куки чтобы их было видно на сайте 2 и можно было бы их отправить на сайт 1?

    В моем случае cookie я записываю вот таким образом:
    PHP:
    setcookie("id"$id_usertime()+60*60*24*COOKIE_TIME$path,$domain,$securefalse);
    где $path,$domain,$secure - не обьявлены.
    В хэлпе сказано (Перейти по ссылке)

    Что я не так сделал? Почему cookie не видны?
    2014-12-04_160526.png
     
  2. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    Давай лучше сразу яваскриптом будем получать куки с sbrf.ru, мне кажется это выгоднее, чем с лэнднгами париться.

    Тебе надо на лэндинге дергать скрипт своего сайта 2, который будет ставить куку на сайте2. Итого, оперировать ты будешь двумя (копиями, если ничего по-дороге не сломаешь) куками на разных доменах, а не одной.
     
  3. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    385
    Симпатии:
    254
    Куки стоят на одном домене, другой грузится в IFrame, и во фрейме происходят все действия с куки второго домена
     
  4. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    Насколько мне помнится, это работает только в случае, если в iframe вы грузите страницу с того же домена (что, в целом, неприменимо в данном случае), иначе - можно грузить туда сайт сбербанка и переводить деньги на свой счет. В других случаях iframeDocument.cookie будет запрещен политикой браузера.

    Вариант только один, описанный выше. Грузить в лэндинг пхпшку с первого сайта (фреймом или картинкой, не важно) с параметром, который этой пхпшкой устанавливать в куку для второго домена.

    <img src="site1/setcookie.php?userid=landinguser5555" />

    в этом случае site1 получит куку, поставленную через setcookie.php
     
  5. gavik

    gavik

    Регистр.:
    25 июл 2010
    Сообщения:
    160
    Симпатии:
    14
    Я пытаюсь сделать партнерскую программу. Загвоздка в том, что cookie устанавливаются с помощью перехода по партнерской ссылки через скрипт-редирект.
    Cookie нужно задавать не добавлением кода картинки на lending.loc а именно при редиректе с сайта test1.ru на lending.loc!
    Причем заданные cookie я хочу отправлять именно ajax запросом с lending.loc на test1.ru.
    [​IMG]
    Есть идеи как это можно реализовать?
     

    Вложения:

    Последнее редактирование: 4 дек 2014
  6. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    385
    Симпатии:
    254
  7. gavik

    gavik

    Регистр.:
    25 июл 2010
    Сообщения:
    160
    Симпатии:
    14
    Так тут не написано как решить проблему с видимостью.
    Передавать ajax запросы между доменами то я умею.
    Вот записывать кроссдоменные cookie - нет. Как сделать то?
     
  8. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Когда-то для себя решил проблему кроссдоменных iframe с помощью прокси (Перейти по ссылке - самые нормальные, я их много перебрал), может и вам поможет.
     
  9. gavik

    gavik

    Регистр.:
    25 июл 2010
    Сообщения:
    160
    Симпатии:
    14
    Причем тут прокси? Javascript не видит cookie!
     
  10. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Он не увидит куки, если iframe с другого домена, а если использовать iframe через прокси, то все увидит.
    Вот пример iframe через прокси:
    Код:
    <iframe id="preview" frameborder="0" data-src="/proxy/ph/index.php?q=http%3A%2F%2Fwww.6pm.com%2F" src="/proxy/ph/index.php?q=http%3A%2F%2Fwww.6pm.com%2F" name="link_iframe"></iframe>
    Вот так забираем куки:
    Код:
    iframe = document.getElementById("preview");
    iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
    iframeDocument.cookie - тут наши куки
    
    Только что проверял, все работает.