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 и смог обрезать заголовки один за другим, разоблачая виновника.

Другие вопросы по тегам