如何禁止 Windows 8 上的 Excel 2013 在某些 Web 查询调用中要求输入登录凭据?

如何禁止 Windows 8 上的 Excel 2013 在某些 Web 查询调用中要求输入登录凭据?

我们在应用程序中构建了一个 Web 查询视图,以简单格式的表格形式返回一些报告(根据需要带有 PRE 标签等)。我们的应用程序自然需要登录,但它基本上是一个 API 层,但使用正确的访问令牌,您无需登录。如果您在浏览器中使用访问令牌点击它,报告就会正常返回(状态代码 200,输出符合预期等)。网址如下

http://www.example.com/api/1/reports/1/?token=1234567890

但是,当我们尝试从 Excel 2013 Web Query 中访问 URL 时,我们首先在预览窗口中顺利获取数据,然后选择表并导入。此时,系统要求我们在登录窗口中输入凭据。我们在那里输入的任何内容都无济于事,经过 3 次尝试后,我们收到“未知错误”警报。我在网上看到一些地方建议设置一些注册表项等,但都不起作用。
相同的查询在 Excel 2003 中有效。此外,我们尝试的其他“网站”似乎也无需登录提示即可运行。
知道发生了什么吗?

来自地狱的登录表单

答案1

我把这个作为答案发布出来,尽管我不完全确定它是否算作答案,因为情况从奇怪恶化到了直接奇怪:

事实证明,来自该 IE 组件面板的请求预览可以正常发送完整的 URL(是的,https)以及查询参数,包括授予访问权限的令牌。但是,当 Excel 发送请求时,它发送的没有任何查询参数,因此被拒绝。我将此请求的令牌移动为 URL 的一部分,如下所示:

https://www.example.com/report/5/_token-1234asdfg5678zxcv/

但 Excel 拒绝发送 /5/(在我的情况下是报告 ID)之后的任何内容的 URL。我无法解释那部分。但它变得更奇怪了。如果我将令牌移到报告 ID 之前,它就会起作用!

https://www.example.com/report/_token-1234asdfg5678zxcv/5/

还没结束,因为 Excel 拒绝发送尾部斜杠。因此最终的 URL 是:

https://www.example.com/report/_token-1234asdfg5678zxcv/5

我不认为这是一个解决方案,因为我不明白 Excel 为什么这样做,但话又说回来,Excel 对我来说是黑魔法。

不确定如何处理赏金。@harrymc,你的评论指示我开始监控服务器日志(之前出于某种原因没有想到这一点)

答案2

该网站是 https 吗?根据此信息,您无法通过 http 进行身份验证。 无法跟踪超链接

答案3

虽然您的 URL 是 http 而不是 https,但您可能需要查找以下标头:

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

如果没有这些标题,Excel 将再次执行所有身份验证工作。

答案4

您的网站必须返回与其他不要求登录的网站不同的答案。

您可以使用Fiddler 网络调试器跟踪两个请求:

  1. 到您的网站,
  2. 到可以运行的网站

两者之间的差异也许可以指出为什么一个有效而另一个无效的原因。

如果您希望我们查看这两条跟踪记录,请在此处发布它们,尤其是返回消息中的所有消息头。

相关内容