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

当单击Excel / Word中的链接时,该链接会将您带到检查用户代理以确定其是否受支持的站点,但该网站可能错误地认为您正在使用MSIE 7.0,而实际上您正在使用其他工具,说铬。

检查与请求一起发送的用户代理时,它显示请求来自MSIE 7.0 – 从用户的angular度来看,MSIE 7.0显然不被使用。

这里发生了什么? 我怎样才能停止向用户显示错误的信息?

问题似乎是Excel / Word尝试预载该链接时被点击。 如果它成功加载,它将打开您的默认浏览器与给定的链接。 但是,在预加载链接时,它也会遵循302redirect。 如果网站不支持MSIE7(现在变得相当普遍),它很可能会将您redirect到一个信息/错误页面。 然后,预加载例程将在您的浏览器中打开此页面,而不是原始链接,导致消息可能解释MSIE 7.0不被支持的原因 – 但让用户清楚地看到该页面是使用Chrome加载的。

有没有推荐的编码方式呢?

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

最简单的解决方法是在“IE 7不支持的页面”上放置浏览器。 Office程序,根据redirect(基于它发送的错误的用户代理string)将加载错误页面,收到一个HTTP 200响应,然后抛出链接到默认浏览器。 然后,浏览器使用适当的用户代理string来请求页面本身。

  1. Office进程请求“example.com/example.html”与“用户代理”兼容; MSIE 7.0“
  2. 服务器将http 302redirect到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”with User Agent“无论浏览器代理是什么”
  7. 服务器返回http 200 Found + example.com/notsupported.html

所以,一旦浏览器请求页面,你可以使用用户代理string,看看你是否真的想发送一个“不支持”的页面,或redirect到真正的内容。

但是,这会引起find被redirect的原始URL的问题。 最初请求页面的Office进程与最终传递端点URL的浏览器之间的共享会话存在问题。 解决方法是将原始请求URL作为查询string参数包含在“不支持”页面的redirect响应中。

Interesting Posts