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 一个一个地剥离,从而暴露罪魁祸首。
我们使用 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 一个一个地剥离,从而暴露罪魁祸首。