0

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

VBA我们使用和检索界面生成的数据来执行这些网络查询Spring REST

我已经尝试过使用http GET而不是http POST尝试通过 UI 执行 Web 查询(“数据”->“获取外部数据”->“使用.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 执行 Web 查询时出错:"Error 1004 Application-defined or Object-defined error"

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

4

1 回答 1

0

找到原因: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 接口,并且能够一一剥离标题,暴露罪魁祸首。

于 2017-04-05T06:55:42.000 回答