Что мне нужно сделать, чтобы Excel получил доступ к веб-запросу через HTTPS?
-
18-09-2019 - |
Вопрос
Я пытаюсь реализовать страницу, которая позволит пользователям Excel использовать данные, которые она предоставляет, с помощью функции веб-запроса, предоставляемой Excel.
Все работает очень хорошо, пока я использую HTTP (работает даже аутентификация пользователя BASIC).
Как только я переключусь на HTTPS, Excel больше не будет загружать данные (это даже полностью официальный сертификат SSL, так что с самоподписанным сертификатом проблем не будет).
Эта статья базы знаний Microsoft примерно описывает проблему.
Теперь часть, которая заставляет меня задуматься, заключается в следующем:
Эта проблема возникает, когда Excel не может инициировать соединение из-за настроек защищенного веб-сервера.
Кажется, это означает, что существует некоторый способ заставить это работать, но нет даже намека на то, в каком направлении мне нужно смотреть.
Следует ли принимать слова «из-за настроек защищенного веб-сервера» за чистую монету или это просто способ Microsoft сказать: «Это не будет работать, если вы не купите у нас подходящее программное обеспечение»?
Решение
Кажется, я нашел проблему:
MS Excel, похоже, не может использовать данные на странице, если в заголовках HTTP страницы указано, что они не должны кэшироваться. и он передается через HTTPS (те же заголовки, отправленные через HTTP, похоже, игнорируются).
Итак, по нет отправив эти заголовки, Excel внезапно смог получить доступ к данным:
Pragma: no-cache
Cache-Control: no-cache
Другие советы
Ответ Иоахима решил для меня проблему.Серверная веб-инфраструктура (PHP5/Expression Engine 1.6.7) отправляла Pragma:без кэша при каждом запросе (хотя на моей странице результатов веб-запроса установлен Pragma:public, я думаю, фреймворк переопределил это).Как только я его удалил, все начало работать.
Поведение IE и Office для Pragma:no-cache аналогичен описанному в Статья базы знаний МС:Internet Explorer не может открыть документы Office с веб-сайта SSL
См. также это руководство по кэшированию Предупреждение:Прагма без кэша устарела.Имея это в виду, я установил «Вывод и отладка Expression Engine»> «Создать заголовки страниц HTTP»?вариант Нет.(Другие платформы имеют аналогичные параметры конфигурации).Но некоторые другие автоматически отправленные заголовки были необходимы для успешного кэширования остальной части сайта, поэтому я решил закомментировать Pragma:строки без кэша в исходном коде фреймворка.
Если у вас нет возможности изменять заголовки HTTP, отправляемые вашим веб-сервером/инфраструктурой, единственным вариантом только на стороне клиента MS-Office будет использование макросов VBA для автоматизации компонента Internet Explorer для обхода поведения кэширования Office. .Видеть Различные способы использования веб-запросов в Microsoft Office Excel 2003 в качестве отправной точки.