Можно было бы ожидать, что открытие гиперссылок из документа Word/Excel запустит браузер по умолчанию с нужным URL-адресом. Как ни странно, это не так, что приводит к нежелательным побочным эффектам и делает невозможным создание ссылок на страницы, защищенные авторизацией на основе сессий или cookie, в этих программах Office.
Виновником является модуль под названием «User Agent: Microsoft Office Existence Discovery» от Microsoft, который предварительно загружает ссылку в фоновом режиме и отслеживает любые перенаправления. Проблему можно воспроизвести следующим образом: Сначала создайте два файла с именами «loggedin.php» (страница при входе в систему) и «login.php» (страница для входа в систему).:
5bcff34c5cecc130a0ee
5bcff34c5cecc130a0ee
После прямого вызова «loggedin.php» вы попадаете непосредственно в «loggedin.php» в исходном состоянии, где сразу же устанавливается файл cookie «logged_in». После повторного вызова «loggedin.php» вы получите сообщение «вы вошли в систему». Если вы свяжетесь с «loggedin.php» в Word или Excel (начиная с версии 2007), вы всегда будете переходить непосредственно к «loggedin.php», независимо от того, входили ли вы в систему ранее или нет.
Программы Office запускают компонент Internet Explorer в фоновом режиме, чтобы проверить, существует ли URL-адрес. Любые перенаправления также отслеживаются до конца, и возвращается последний URL-адрес без перенаправления (в нашем случае «login.php»), к которому можно получить доступ с помощью стандартного браузера. Возможное решение — перехватить и заблокировать фоновый вызов на первой странице.:
5bcff34c5cecc130a0ee