Mac Excel 网络查询无效

Mac Excel web query not working

我们使用 web queries 检索 Excel 中的数据以用于报告目的。这些 Web 查询在 Excel 2007、2010、2013 和 2016 年正常工作。
但是在 Mac Excel 2016 年使用时失败.

我们使用 VBA 执行这些网络查询并检索由 Spring REST 接口生成的数据。

我已经尝试使用 http GET 而不是 http POST 并尝试通过 UI ('Data' -> 'Get External Data' -> 'Run Saved Query' 使用 .iqy 文件)。
另外错误似乎与内容无关(尝试非常简单html;<html><body><table><tr><td>col1</td></tr><tr><td>value1</td></tr></table></body></html>.

使用Wireshark分析流量时,REST调用的响应是正确的(http 200内容正确)。

使用“.iqy”文件导入 UI 时报告的错误:"cannot locate the internet server or proxy server"。 使用 VBA 执行网络查询时出错:"Error 1004 Application-defined or Object-defined error".

有谁知道是什么导致了这种行为?

找到原因:Spring MVC (REST) 设置了一些 default headers。其中之一是 X-Content-Type-Options: nosniff。我们生成一些 REST 响应数据的方式导致未设置 Content-Type header.

Mac Excel 无法确定内容类型 (因为 X-Content-Type-Options: nosniff 选项).

这可以通过不设置 X-Content-Type-Options header 或显式设置 Content-Type header.

来解决

额外信息:我已经使用 WireMock 来模拟 REST 接口,并且能够将 header 一个一个地剥离,从而暴露罪魁祸首。