Надстройки офисных веб-приложений (Word, Excel, Powerpoint), удаляющие файлы cookie в IE11 в Windows 7
Я публикую это как вопрос и ответ для всех, у кого есть эта проблема, поскольку это была абсолютная PITA для отладки.
У нас есть надстройка панели задач для Word, на которой есть страница входа, использующая файлы cookie для хранения состояния сеанса. Это прекрасно работает во всем, кроме Word Web в Internet Explorer 11 в Windows 7.
Используя Fiddler, мы видим, что наши cookie-файлы были установлены, и все в порядке, даже cookie-файлы сеанса остаются неизменными (это вообще другая проблема), но по какой-то причине.AspNet.ApplicationCookie никогда не отправляется обратно с запросом на HTML-страница - но она отправляется обратно для запроса JavaScript. WTF.
1 ответ
Смотрите ответ на этот пост: Cookie заблокирован / не сохранен в IFRAME в Internet Explorer
Проблема связана с тем, что в Word Web панель задач находится в IFRAME. Это как-то связано с политиками P3P, которые, насколько мы можем судить, ничем другим не используются.
В любом случае, вот важные моменты из этого ответа:
Я провел большую часть своего дня, изучая P3P, и чувствую необходимость поделиться тем, что я узнал.
Я заметил, что концепция P3P очень устарела и, похоже, действительно используется / поддерживается Internet Explorer (IE).
Самое простое объяснение: IE хочет, чтобы вы определяли заголовок P3P, если вы используете куки.
... и решение...
Короче говоря - чтобы IE был доволен - добавьте следующую строку в ваш PHP-код (другие языки должны выглядеть одинаково)
header('P3P: CP="Potato"');
Проблема решена, и IE доволен этой картошкой.
Таким образом, вам нужно добавить этот HTTP-заголовок ко всем ответам, чтобы IE играл в мяч.
Если вы используете IIS для размещения своего веб-сайта, добавьте его в файл web.config:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="P3P" value="CP='Potato'" />
</customHeaders>
</httpProtocol>
<system.webServer>
<configuration>