Mac Excel веб-запрос не работает
Мы используем web queries
извлекать данные в Excel для целей отчетности. Эти веб-запросы работают правильно в Excel 2007, 2010, 2013 и 2016.
Но при использовании в Mac Excel 2016 это не удается.
Мы выполняем эти веб-запросы, используя VBA
и получить данные, сгенерированные Spring REST
интерфейс.
Я уже пытался использовать http GET
вместо http POST
и попытался выполнить веб-запрос через пользовательский интерфейс ("Данные" -> "Получить внешние данные" -> "Запустить сохраненный запрос", используя .iqy
файл).
Также ошибка, кажется, не связана с контентом (пробовал очень простой HTML; <html><body><table><tr><td>col1</td></tr><tr><td>value1</td></tr></table></body></html>
)
При использовании Wireshark для анализа трафика ответ на вызов REST является правильным (http 200
с правильным содержанием).
Ошибки, сообщенные при импорте пользовательского интерфейса с использованием файла.iqy: "cannot locate the internet server or proxy server"
, Ошибка при выполнении веб-запроса с использованием VBA: "Error 1004 Application-defined or Object-defined error"
,
У кого-нибудь есть идеи, что может вызвать такое поведение?
1 ответ
Нашел причину: Spring MVC (REST) имеет некоторые заголовки по умолчанию, которые он устанавливает. Один из них является X-Content-Type-Options: nosniff
, То, как мы сгенерировали некоторые данные ответа REST, не привело к установке Content-Type
заголовок.
Mac Excel не смог определить тип содержимого (из-за опции X-Content-Type-Options: nosniff).
Эту проблему можно решить либо не устанавливая заголовок X-Content-Type-Options, либо явно указав Content-Type
заголовок.
Информация о бонусе: я использовал WireMock для имитации интерфейса REST и смог обрезать заголовки один за другим, разоблачая виновника.