人们可能会认为,在 Word/Excel 文档中打开超链接会启动默认浏览器并显示目标 URL。但奇怪的是,事实并非如此——这会导致一些不良的副作用,并且使得在这些 Office 程序中无法访问基于会话或 cookie 的登录保护页面。
罪魁祸首是微软名为“用户代理:Microsoft Office Existence Discovery”的模块,该模块在后台预加载链接并跟踪任何重定向。该问题可以按如下方式重现:首先,创建两个文件,分别名为“loggedin.php”(登录时的页面)和“login.php”(登录时的页面):
5bcff34c5cecc130a0ee
5bcff34c5cecc130a0ee
直接调用“loggedin.php”后,直接进入原始状态的“login.php”,其中立即设置cookie“logged_in”。再次调用“loggedin.php”后,您会收到消息“您已登录”。如果您在 Word 或 Excel(从 2007 版本开始)中链接到“loggedin.php”,则无论您之前是否已经登录,您都将始终直接转到“login.php”。
Office 程序在后台启动 Internet Explorer 组件来检查 URL 是否存在。任何重定向也会被跟踪到最后,并且返回最后一个没有重定向的 URL(在我们的例子中为“login.php”)并使用标准浏览器进行访问。一个可能的解决方案是拦截并阻止首页的后台调用:
5bcff34c5cecc130a0ee