为什么单击Excel / Word中的链接会导致我的非IE浏览器伪装成MSIE 7.0?

时间:2013-05-29 12:51:55

标签: excel hyperlink ms-word internet-explorer-7 user-agent

单击Excel / Word中的链接,并且该链接将您带到检查用户代理以确定其是否受支持的站点时,该站点可能错误地认为您正在使用MSIE 7.0,而实际上您是使用别的东西,比如Chrome。

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

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

2 个答案:

答案 0 :(得分:8)

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

是否有推荐的编码方式?

如果之前已经回答过,请告诉我。我希望它有所帮助。

答案 1 :(得分:5)

最简单的解决方案是在“IE 7不支持的页面”上进行浏览器检查。 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
  8. 因此,一旦浏览器请求页面,您就可以使用用户代理字符串来查看您是否确实要发回“不支持”页面,或将请求重定向到真实内容。

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