Полная перезагрузка страницы приложения Facebook в IE, но не в Chrome

Я разработал приложение для Facebook с помощью Facebook C# SDK. Интересно, что всякий раз, когда пользователь щелкает ссылку в Internet Explorer, вся страница перезагружается, включая список друзей справа и список чатов. Если сделать то же самое с Chrome, этого не происходит - перезагружается только страница холста, но списки справа остаются нетронутыми.

Я отследил проблему с помощью веб-отладчика Fiddler и обнаружил следующее. Предположим, что мое приложение называется my_app и развернуто в Windows Azure (cloudapp.net). Таким образом, клик по ссылке (например, на ту же страницу) в IE приводит к следующим вызовам:

  1. my_app.cloudapp.net/Default.aspx
  2. www.facebook.com/dialog/oauth/...
  3. www.facebook.com/dialog/permissions/...
  4. cloudapp/facebookredirect.axd?state=...
  5. apps.facebook.com/my_app/...
  6. my_app.cloudapp.net/Default.aspx

Бэктрейс из Chrome совершенно другой:

  1. my_app.cloudapp.net/Default.aspx
  2. www.facebook.com/extern/login_status.php?...

По какой-то причине процесс авторизации из Chrome отличается. Я реализую авторизацию так же, как это делается в примерах файлов из Facebook C# SDK — с помощью CanvasAuthorizer.Authorize(). Любые идеи, почему возникает эта проблема, и есть ли у вас какие-либо рекомендации о том, как получить поведение Chrome в IE?

Большое спасибо, Йордан


person Shere Khan    schedule 02.11.2011    source источник
comment
Я с той же проблемой. На локальном хосте перезагружается только URL-адрес холста как в IE, так и в Chrome (для chrome я получаю перезагрузку всей страницы, если не использую Javascript SDK). Однако при развертывании в облаке у меня перезагружается вся страница в IE, но не в Chrome.   -  person Sanorita Rm    schedule 02.11.2011


Ответы (1)


Могу поспорить, что это проблема с файлами cookie. IE может вести себя странно с файлами cookie в iFrames (вероятно, поэтому он выполняет повторную аутентификацию при каждом запросе).

Я не знаю об этом SDK, но попробуйте добавить что-то подобное в свой код за главной страницей — это политика конфиденциальности P3P, которая может помочь.

HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
person kevin    schedule 02.11.2011