Веб-запрос 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".

Кто-нибудь знает, что может вызвать такое поведение?


person R. Oosterholt    schedule 31.03.2017    source источник
comment
Этот ответ может помочь: stackoverflow.com/questions/42652648/   -  person CallumDA    schedule 31.03.2017
comment
Спасибо @CallumDA; Это не помогает, так как не отвечает на вызовы веб-запросов. Это не имеет ничего общего с поиском в Интернете; web queries – это метод вставки данных листа из конечной точки в Интернете, используемый Excel.   -  person R. Oosterholt    schedule 31.03.2017


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

person R. Oosterholt    schedule 05.04.2017