У меня была такая же проблема. Приложение 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, ваши серверные скрипты все равно получат их из параметра запроса.
Надеюсь, это имеет какой-то смысл, я не совсем понял, но это исправило мое приложение.