Как MS-Word открывает гиперссылку? - PullRequest
14 голосов
/ 14 сентября 2009

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

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

Что дает? Это по замыслу?

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

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

Ответы [ 3 ]

17 голосов
/ 17 декабря 2009

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

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

15 голосов
/ 23 августа 2011

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

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

Firefox может в конечном итоге нуждаться в этих файлах cookie, если это вход с использованием единого входа.

3 голосов
/ 26 июня 2013

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

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

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

Тогда «настоящий» браузер повторно отправит http-запрос, и все хорошо закончится, поскольку оттуда запрос обрабатывается нормально, и вся информация сохраняется в сеансе с «настоящим» браузером.

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

...