4

我正在尝试实现一个页面,该页面允许 Excel 用户使用它通过 Excel 提供的 Web Query 功能提供的数据。

只要我使用 HTTP(甚至 BASIC 用户身份验证也可以),一切都很好。

一旦我将其切换到 HTTPS,Excel 将不再下载数据(它甚至是完全官方的 SSL 证书,因此自签名证书不是问题)。

这篇 Microsoft 知识库文章几乎描述了这个问题。

现在让我想知道的部分是:

当 Excel 由于安全 Web 服务器上的设置而无法启动连接时,会出现此问题。

这似乎意味着有一些方法可以让这个工作,但甚至没有暗示我需要看的方向。

是否应该从表面上理解“因为安全 Web 服务器上的设置”,还是只是 Microsoft 的一种说法:“除非您从我们这里购买正确的软件,否则这将无法工作”?

4

2 回答 2

6

It seems I've found the problem:

MS Excel seems to be unable to use the data on the page if the HTTP headers of the page specify that it should not be cache and it is transfered via HTTPS (the same headers sent via HTTP seem to get ignored).

So by not sending these headers, Excel was suddenly able to access the data:

Pragma: no-cache
Cache-Control: no-cache
于 2010-02-05T12:41:07.077 回答
1

Joachim 的回答为我解决了这个问题。服务器端 Web 框架(PHP5 / 表达式引擎 1.6.7)在每个请求上都发送一个 Pragma: no-cache(即使我的 Web 查询结果页面设置了 Pragma: public,我猜框架会覆盖它)。一旦我删除它,一切都开始工作了。

Pragma 的 IE 和 Office 行为:no-cache 与 MS 知识库文章中描述的类似:Internet Explorer 无法从 SSL 网站打开 Office 文档

另请参阅此缓存教程的警告:Pragma no-cache Deprecated。考虑到这一点,我设置了表达式引擎的输出和调试 > 生成 HTTP 页面标题?选项为否。(其他框架有类似的配置选项)。但是成功缓存站点的其余部分需要其他一些自动发送的标头,因此我选择注释掉框架源代码中的 Pragma: no-cache 行。

如果您没有修改由 Web 服务器/框架发送的 HTTP 标头的选项,则唯一的 MS-Office-client-side-only 选项将是使用 VBA 宏来自动化 Internet Explorer 组件以绕过 Office 的缓存行为. 请参阅Microsoft Office Excel 2003 中使用 Web 查询的不同方法作为起点。

于 2010-07-23T14:16:55.927 回答