10

单击 Excel/Word 中的链接时,该链接会将您带到检查用户代理以确定它是否受支持的站点,该站点可能会错误地假定您使用的是 MSIE 7.0,而实际上您使用的是其他东西,说铬。

当检查与请求一起发送的用户代理时,它显示请求来自 MSIE 7.0 - 从用户的角度来看,很明显没有使用 MSIE 7.0。

这里发生了什么?如何停止向用户显示错误消息?

4

2 回答 2

9

问题似乎是 Excel/Word 在单击时尝试预加载链接。如果成功加载,它将使用给定的链接打开您的默认浏览器。但是,在预加载链接时,它也会遵循 302 重定向。如果站点不支持 MSIE7(现在变得相当普遍),它很可能会将您重定向到信息/错误页面。然后,预加载例程将在您的浏览器中打开此页面,而不是原始链接,从而产生一条可能解释为什么不支持 MSIE 7.0 的消息 - 但会使可以清楚地看到该页面是使用 Chrome 加载的用户感到困惑。

有没有推荐的编码方式?

如果之前已经回答过,请告诉我。我希望它可以帮助某人。

于 2013-05-29T12:51:54.860 回答
7

最简单的解决方案是在“IE 7 not supported page”上进行浏览器检查。Office 程序遵循重定向(基于它发送的错误用户代理字符串)将加载错误页面,接收 HTTP 200 响应,然后将链接抛出到默认浏览器。然后,浏览器使用其正确的用户代理字符串请求页面本身。

  1. Office 进程请求“example.com/example.html”,用户代理“兼容;MSIE 7.0”
  2. 服务器返回 http 302 重定向到 example.com/notsupported.html
  3. Office 进程请求“example.com/notsupported.html”,用户代理“兼容;MSIE 7.0”
  4. 服务器返回 http 200 Found + example.com/notsupported.html
  5. Office 进程将链接传递给默认浏览器
  6. 默认浏览器请求“example.com/notsupported.html”,用户代理“无论浏览器代理是什么”
  7. 服务器返回 http 200 Found + example.com/notsupported.html

因此,一旦浏览器请求该页面,您就可以使用用户代理字符串来查看您是否真的想要发回“不支持”页面,或者将请求重定向到真实内容。

但是,这会引发查找被重定向的原始 URL 的问题。在最初请求页面的 Office 进程和最终通过端点 URL 的浏览器之间共享会话存在问题。此处的解决方法是将原始请求 URL 作为查询字符串参数包含在对“不支持”页面的重定向响应中。

于 2013-09-19T13:56:29.773 回答