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

And*_*rew 9 excel user-agent ms-word hyperlink internet-explorer-7

当点击在Excel/Word中的链接,该链接后,会进入检查用户代理,以确定它是否支持或不一个网站,该网站可能会错误地假设你的时候,其实你用别的东西使用MSIE 7.0 ,说Chrome.

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

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

And*_*rew 8

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

有没有推荐的编码方式?

如果之前已经回答过,请告诉我.我希望它对某人有帮助.


Jam*_*ord 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

因此,一旦浏览器请求页面,您就可以使用用户代理字符串来查看您是否确实要发送"不支持"页面,或将请求重定向到真实内容.

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