Как MS-Word открывает гиперссылку?

У меня есть документ MS-Word с гиперссылкой. Гиперссылка указывает на перенаправитель аутентификации на моем сервере. Когда я управляю щелчком по гиперссылке, в моих журналах сервера сообщается, что он

  1. выполняет выборку с IE, затем  
  2. выбирает URL-адрес перенаправления с IE, затем  
  3. запускает "браузер по умолчанию", который является Firefox в моем случае, и повторно выбирает второй (перенаправляющий) URL-адрес.

    Что дает? Это по дизайну?

    Я заметил это, потому что моя система auth в настоящее время зависит от файлов cookie, заданных перенаправителем. У меня есть некоторые идеи об использовании url-based auth для этого бита, но мне нужно знать, что мотивирует поведение Word в первую очередь.

    У меня есть некоторые догадки, но я ищу что-то авторитетное (или, по крайней мере, более обоснованное предположение).

Ответы

Ответ 1

К сожалению, да. И они пытаются обвинить его в "ограничении системы единого входа, используемой веб-сервером"...

http://support.microsoft.com/kb/899927

Ответ 2

Собственно, это "функция". Если гиперссылка относится к документу Word, слово будет пытаться загрузить документ и открыть его. (Вы должны думать об этом IE из-за пользователя-агента, но запрос поступает из WinInet в процессе Word.)

Беспорядок возникает, когда сервер не отвечает страницей, а скорее отвечает перенаправлением и куки. Word следует за перенаправлением, чтобы узнать, не собирается ли он получить документ Word, и в итоге он заканчивается HTML-страницей. Затем он решает, что Firefox должен отображать его, поэтому он запускает Firefox с окончательным перенаправленным URL-адресом (но без каких-либо файлов cookie, отправленных сервером).

В Firefox могут потребоваться эти файлы cookie, если это вход в систему SSO.

Ответ 3

Позднее добавление:

Отметили ту же проблему. Здесь с MVC 4 это привело к потере информации о запросах. Word запускает браузер только после получения статуса Http 200.

Поэтому я избегал этого, проверяя в контроллере, поступает ли запрос от IE7 (представляющий скорее всего только MS Word) и возвращающий 200 вручную.

Затем "реальный" браузер повторно отправит http-запрос и все хорошо концы, так как оттуда запрос обрабатывается нормально, и вся информация сохраняется в сеансе с "реальным" браузером.

Немного обходного пути, но эй, это работает. И это только для небольшого количества запросов (в нашем случае).