最近遇到一个问题,一个系统的链接譬如:
http://*/home/biaofa.biaofa_list/biaozhuncontent?itemid=29008&quanku=1
在 wps 打开内容页面正常,在 office 中打开后跳转至系统首页,当时研究了一阵,未知其然,提出了让用户去用 wps 做临时处理的方式,后来这事暂时耽搁了下来。
后来考虑到是否是两个软件对于超链的处理不一样,打算抓包看一下,使用 Wireshark ,分别点击进行抓包,发现
对于这个红框的请求中,wps 直接返回200,但是 office返回 304 做了个登录跳转,查看系统对于登录状态判断,认为是cookie丢失导致的,但是为啥wps 不丢,进一步分析抓包数据,发现 wps使用的是电脑上默认的浏览器内核发送请求数据,office用的是IE内核发送,IE上没有登录状态故系统认定未登录,office接收到 304 后,会继续自己处理,直到获取 200 然后抛出给默认浏览器,此时,默认浏览器有登录状态,访问登录页面时自动跳转到系统首页,问题复现。
确定问题后,明确思路是区分请求来源返回200状态,发现office并不会去解析页面的js,因为其只认 200 状态,故设置
Accept: */* 且不为 ajax请求的访问 返回一个 js 控制的跳转,跳转至正确页面,问题解决。