如何让Excel通过HTTPS访问Web查询需要做什么?

我试图实现一个页面,允许Excel用户通过Excel提供的Web查询function使用它提供的数据。

只要我使用HTTP(甚至基本的用户身份validation工作),这一切都非常好。

只要我切换到HTTPS Excel不会再下载数据(它甚至是一个完全的官方SSL证书,所以它不是一个自签名的问题)。

这篇Microsoft知识库文章非常详细地描述了这个问题。

现在让我想到的部分是这样的:

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

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

如果“因为安全的Web服务器上的设置”被拿来面对价值,还是只是微软的方式说:“除非你从我们这里购买正确的软件,否则这是行不通的?

看来我发现了这个问题:

MS Excel似乎无法使用页面上的数据,如果页面的HTTP标头指定它不应该caching, 通过HTTPS传输(通过HTTP发送相同的头似乎被忽略)。

所以通过发送这些头文件,Excel突然能够访问数据:

Pragma: no-cache Cache-Control: no-cache 

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

用于Pragma的IE和Office行为:no-cache与MS KB中描述的相似文章:Internet Explorer无法从SSL Web站点打开Office文档

另请参阅此caching教程的警告:Pragma no-cache已弃用 。 考虑到这一点,我设置了expression式引擎的输出和debugging>生成HTTP页头? 选项号(其他框架有类似的configuration选项)。 但是其他一些自动发送的头文件需要成功caching网站的其余部分,所以我select了评论Pragma:框架源代码中的no-cache行。

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