代码之家  ›  专栏  ›  技术社区  ›  Joachim Sauer

我需要做什么才能让Excel通过HTTPS访问Web查询?

  •  4
  • Joachim Sauer  · 技术社区  · 14 年前

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

    只要我使用HTTP(即使是基本的用户身份验证也能工作),一切都很顺利。

    一旦我切换到HTTPS Excel,它就不会再下载数据了(它甚至是一个完全正式的SSL证书,所以自签名证书也不会有问题)。

    This Microsoft knowledge base article 几乎可以描述这个问题。

    让我好奇的是:

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

    这似乎意味着 一些 这是一个很好的方法,但我根本不知道该怎么看。

    “因为安全Web服务器上的设置”是按面值计算,还是用微软的方式说“除非你从我们这里购买合适的软件,否则这行不通”?

    2 回复  |  直到 13 年前
        1
  •  6
  •   Joachim Sauer    14 年前

    我好像发现了问题:

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

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

    Pragma: no-cache
    Cache-Control: no-cache
    
        2
  •  1
  •   dankingsbury    14 年前

    约阿希姆的回答帮我解决了这个问题。服务器端Web框架(php5/expression engine 1.6.7)正在发送一个pragma:no cache,用于每个请求(即使我的Web查询结果页设置了pragma:public,我想框架已经超越了它)。一旦我把它取下来,一切都开始工作了。

    pragma的ie和office行为:no cache与中描述的类似 MS KB Article: Internet Explorer is unable to open Office documents from an SSL Web site

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

    如果您没有修改Web服务器/框架发送的HTTP头的选项,那么唯一的MS Office客户端选项将是使用VBA宏自动执行Internet Explorer组件,以绕过Office的缓存行为。见 Different Ways of Using Web Queries in Microsoft Office Excel 2003 作为起点。