Назад | Перейти на главную страницу

Гиперссылки Office для Mac, которые перенаправляют на HTTPS, не загружаются с сообщением «Невозможно открыть. Не удается найти Интернет-сервер или прокси-сервер ».

Наши пользователи пытаются вставлять ссылки на наш сайт http://www.newsfixed.com/ в документах Word, и они не работают. Word для Mac очень чувствителен к конфигурации сервера и иногда не может загрузить определенные ссылки. Та же проблема, похоже, происходит со ссылками на http://www.facebook.com/ и http://www.pinterest.com/ (но ссылки на google, twitter, instagram и т. д. в порядке)

Действия по воспроизведению:

  1. Создайте новый документ Word для Mac
  2. Введите в документ следующие URL-адреса и позвольте Word превратить их в гиперссылки:

    http://www.google.com/ http://www.facebook.com/ http://www.theguardian.com/ http://www.nytimes.com/ http://www.pinterest.com/ http://www.instagram.com/ http://www.twitter.com/

  3. Нажмите на ссылки - вы увидите, что Google, Guardian, New York Times, Instagram и Twitter будут работать, а Facebook и Pinterest (и мой сайт www.newsfixed.com) - нет. Word сообщает об ошибке: «Невозможно открыть http://www.pinterest.com/. Не удается найти Интернет-сервер или прокси-сервер. ":

Это могло быть как-то связано с https://stackoverflow.com/questions/17926225/microsoft-office-hyperlink-issues но я не знаю как!

Глядя на HTTP-ответ pinterest.com, казалось, что это могло быть связано с обслуживанием временного перенаправления 302 на версию HTTPS, а не 301, которое было общим для моего сайта и pinterest. Итак, я изменил конфигурацию сервера и теперь возвращаю 301, но, похоже, это не имеет никакого значения.

У меня старая версия Word для Mac - 12.3.6. У меня были сообщения, что это также происходит в более новых версиях Word (но без номеров версий, извините). По-видимому, это только начало происходить на прошлой неделе, возможно, это как-то связано с установкой SSL и патчами Heartbleed? (Я, конечно, восстановил свой сертификат на этой неделе)

Сервер представляет собой стандартный Apache 2.4 в Ubuntu, на котором запущено приложение Django через mod_wsgi.

Спасибо за любую помощь,

Брендан.

Что ж, мне удалось заставить его работать ...

Похоже, Word не любит мой SSL-сертификат (от RapidSSL / GeoTrust), хотя он проходит все проверки на сайтах проверки SSL (Digicert sslshopper и больше).

Итак, я понял, что мне нужно поймать пользовательский агент Word в моей конфигурации Apache HTTPD:

RewriteEngine On
# catch MS Office clients and send them to an HTTP redirect page
BrowserMatchNoCase (word|excel|powerpoint|ms-office) browser=ms-office
RewriteCond %{ENV:browser} ms-office
RewriteRule ^/(?!ms\-office) http://%{HTTP_HOST}/ms-office?url=%{REQUEST_URI} [R=301,L]

# everyone else can go to the HTTPS site
RewriteCond %{HTTPS} off
RewriteCond %{ENV:browser} !ms-office
RewriteRule ^(?!ms\-office) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

ScriptAlias /ms-office /<path>/bin/msoffice-redirect.sh

где "msoffice-redirect.sh" - это простой скрипт Bash CGI (!), выполняющий мета-обновление защищенной страницы:

#!/bin/bash

URL=${QUERY_STRING//url=/}

echo "Content-type: text/html"
echo
echo "<html><head><meta http-equiv='refresh' content='0;url=https://www.newsfixed.com${URL}'/></head><body></body></html>"

Итак, поток такой:

  1. Word делает запрос по http: // URL
  2. Apache обнаруживает пользовательский агент, если это Office, перенаправляет на скрипт
  3. Поскольку страница выглядит нормально для Office, Word открывает браузер, указывающий на вывод скрипта на незащищенном сервере, который представляет собой простую HTML-страницу, содержащую метатег обновления.
  4. Обновление переключает пользователя на версию HTTPS, но поскольку в браузере происходит подтверждение SSL, это не проблема.

Да это полный взлом. Я чувствую себя грязным. Но это работает. Все ссылки в документах Word должны быть http: //, хотя ссылки https: // не работают, но, по крайней мере, сейчас мы можем включить некоторые ссылки в наши документы Word.

Я был вдохновлен приложение Ruby "исправить ссылки Microsoft" который делает то же самое на сервере Ruby.

Надеюсь, это поможет кому-нибудь избежать боли, которую я пережил в эти выходные!