Что мне нужно сделать, чтобы Excel получил доступ к веб-запросу через HTTPS? - PullRequest
4 голосов
/ 05 февраля 2010

Я пытаюсь реализовать страницу, которая позволяет пользователям Excel использовать данные, которые она предоставляет с помощью функции веб-запросов, предоставляемой Excel.

Все работает довольно хорошо, пока я использую HTTP (даже работает базовая аутентификация пользователя).

Как только я переключу это на HTTPS, Excel больше не будет загружать данные (это даже полностью официальный SSL-сертификат, так что это не проблема с самозаверяющим сертификатом).

Эта статья базы знаний Майкрософт в значительной степени описывает проблему.

Теперь часть, которая заставляет меня задуматься, такова:

Эта проблема возникает, когда Excel не может установить соединение из-за настроек на безопасном веб-сервере.

Кажется, это подразумевает, что есть какой-то способ заставить это работать, но нет даже намека на направление, на которое мне нужно смотреть.

Следует ли принимать «из-за настроек на защищенном веб-сервере» за чистую монету или это просто способ Microsoft сказать «это не сработает, если вы не купите у нас подходящее программное обеспечение»?

Ответы [ 2 ]

6 голосов
/ 05 февраля 2010

Кажется, я нашел проблему:

MS Excel, по-видимому, не может использовать данные на странице, если в заголовках HTTP страницы указано, что они не должны кэшироваться и они передаются через HTTPS (те же заголовки, отправленные через HTTP, кажутся быть проигнорированным).

Таким образом, не отправляя эти заголовки, Excel внезапно смог получить доступ к данным:

Pragma: no-cache
Cache-Control: no-cache
1 голос
/ 23 июля 2010

Ответ Иоахима решил проблему для меня. Серверная веб-инфраструктура (PHP5 / Expression Engine 1.6.7) отправляла Pragma: no-cache при каждом запросе (хотя моя страница с результатами веб-запросов установила Pragma: public, я полагаю, что инфраструктура ее переопределила). Как только я удалил его, все начало работать.

Поведение IE и Office для Pragma: отсутствие кэширования аналогично описанному в Статья в MS KB: Internet Explorer не может открывать документы Office с веб-сайта SSL

См. Также этот учебник кэширования Предупреждение: Pragma no-cache устарела . Имея это в виду, я установил Expression Engine 'Вывод и отладка> Создать заголовки страниц HTTP? вариант к Нет. (Другие структуры имеют аналогичные параметры конфигурации). Но некоторые другие автоматически отправляемые заголовки были необходимы для успешного кэширования остальной части сайта, поэтому я решил закомментировать строки Pragma: no-cache в исходном коде фреймворка.

Если у вас нет возможности изменить заголовки HTTP, отправленные вашим веб-сервером / платформой, единственным вариантом MS-Office-client-only-side-only будет использование макросов VBA для автоматизации компонента Internet Explorer для обхода Кэширующее поведение офиса. См. Различные способы использования веб-запросов в Microsoft Office Excel 2003 в качестве отправной точки.

...