Приложение Facebook iFrame - IE7 не позволяет куки - PullRequest
0 голосов
/ 02 февраля 2011

Я знаю, что эта тема широко освещалась, но я полностью застрял и нуждаюсь в каком-то руководстве и новых мнениях.У меня есть приложение Facebook iFrame, которое отлично работает в IE6,8, Safari, Chrome, FF и т. Д. Только IE7 вызывает у меня горе.

Я создал файл политики P3P и связанный с ним файл XML.Политика полностью проверяется с помощью валидатора политики P3P.

Как только iFrame загружается из Facebook, появляется значок красных глаз, и когда я нажимаю на него, он сообщает, что cookie-файлы из домена iFrame заблокированы.Я подтвердил, что по умолчанию «средний» параметр конфиденциальности установлен на IE7.Интересно, что я обнаружил, что при удалении Google Analytics страница будет загружаться изначально без блокировки файлов cookie, но как только страница обновляется или пользователь входит в систему, файлы cookie снова блокируются, даже если заголовок P3P отправляется сразу из каждогостр.Все активы отправляются через S3, поэтому там не должно быть никаких проблем.

К вашему сведению, вот мой файл P3P;Я пробовал абсолютные пути, относительные пути, порядок переключения CP и policyref, и безуспешно разделил их на отдельные вызовы заголовков.

header('P3P: CP="NON DSP TAIa PSAa PSDa OUR IND UNI", policyref="/w3c/p3p.xml"');

Я подтвердил, что заголовок P3P отправляется и принимаетсябраузером.Я добавил мета-тег p3p на страницу HTML.Я удалил все перенаправления.Тем не менее проблема сохраняется.Я потратил так много времени на изучение этого вопроса, и теперь у меня нет идей.Будем весьма благодарны за любые мысли или идеи о том, как подойти к этому с новой точки зрения.Я использую PHP 5.3.5 поверх NGINX.Фреймворк не используется ...

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

я не знаю, но, возможно, это поможет, это сработало как брелок в моем приложении.

header('P3P: CP="CAO PSA OUR"');
ob_start();
session_start();
0 голосов
/ 03 февраля 2011

У меня была такая же проблема. Приложение Facebook iframe прекрасно работало во всех браузерах, кроме IE7. Когда вы впервые зашли в приложение, оно загрузилось нормально. Но затем, когда вы нажмете на ссылку, она загрузит страницу в порядке, но затем через секунду или около того обновит и перенаправит браузер. В итоге вы просто получили пустую страницу. У меня также был значок красных глаз, блокирующий печенье.

Виновником оказался код javascript, который загружает библиотеку javascript facebook:

FB.init({
            appId  : '<?=FACEBOOK_APP_ID?>',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml  : true  // parse XFBML
        });

Чтобы исправить проблему, я изменил статус: true, на статус: false. Теперь при нажатии на ссылки страница загружается и не обновляется.

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

Таким образом, проблема IE7, не устанавливающего куки, установленные внутри iframe, все еще существует, сглаз остается. Но до тех пор, пока ссылки внутри вашего iframe ссылаются на родительское окно target = "_ top", указывающее на страницу холста Facebook, кажется, вам все равно не нужен файл cookie. PHP SDK ищет сессию в нескольких местах, начиная с $ _REQUEST. Я предполагаю, что когда Facebook загружает iframe, он включает параметр сеанса в строку запроса. Таким образом, несмотря на то, что куки не работают в IE7 через iframe, ваши серверные скрипты все равно получат их из параметра запроса.

Надеюсь, это имеет какой-то смысл, я не совсем понял, но это исправило мое приложение.

...