Проблема с настройкой переменных сеанса PHP в междоменном iframe

StackOverflow https://stackoverflow.com/questions/805136

Вопрос

Версия Coles Notes:

index.php?map_id=foo загружается в iframe на www.not-my-domain.com.наборы индексов SESSION['map_id'] = foo.Флэш-файл пытается получить SESSION['map_id'] через Authenticate.php, но Authenticate.php не имеет значений, установленных для Любой SESSION вариабли.

-- Только при первой загрузке, междоменная проблема.

Многословный:

У меня есть индекс while, в котором я устанавливаю: SESSION['map_id'] = foo

Затем индексный файл загружает флэш-файл.При инициализации флэш-обращается к 'Authenticate.php' файл, который эхо из SESSION['map_id'] и загружается во flash через LoadVars.Затем Flash отображает соответствующие данные.Этот шаг не может быть выполнен другим способом

Все это прекрасно работает на нашем основном сайте.Проблема возникает, когда мы пытаемся выполнить перенос на другие сайты, предоставляя коды для встраивания iframe:

<iframe src="http://www.mydomain.com/?map_id=foo&code=bar" ... ></iframe>

При новой загрузке кода для встраивания с другого сайта (www.anotherdomain.com) кажется, что SESSION переменные были уничтожены, так как flash просто говорит, что они пусты.( $map_id выводит пробел )

Индексный файл по-прежнему будет корректно воспроизводиться $map_id как 'foo', просто кажется, что файл 'Authenticate.php' не может получить доступ к SESSION вариабли.

Я позаботился о том, чтобы session_start() присутствует во всех соответствующих файлах.

Это было полезно?

Решение

Идентификаторы сеансов PHP по умолчанию передаются через файлы cookie, но вы не можете передавать файлы cookie между доменами.Вместо этого попробуйте передать идентификатор сеанса через URL-адрес.

Вот соответствующая страница в документации php.

Есть несколько способов заставить php передавать идентификатор сеанса в URL-адресе, если это не делается автоматически.

  1. Вы можете вручную передать идентификатор сеанса в URL-адресе (должен быть указан перед другими переменными get).:

    <iframe src="http://www.mydomain.com/?&map_id=foo&code=bar">

  2. Вы можете отключить файлы cookie, заставляя каждый запрос автоматически добавлять идентификатор сеанса к URL-адресу:

    ini_set("session.use_cookies","0");

  3. Вы можете отредактировать параметр url_rewriter.tags, который указывает PHP, какие html-теги следует переписать с идентификатором сеанса.Здесь iframe=src был добавлен в набор по умолчанию:

    ini_set("url_rewriter.tags", "a=href,area=href,frame=src,iframe=src,input=src,form=fakeentry");

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top