web-dev-qa-db-ja.com

HTTPSにリダイレクトするOfficefor Macハイパーリンクは、「開くことができません。インターネットサーバーまたはプロキシサーバーが見つかりません。」で読み込めません。

私たちのユーザーは私たちのサイトへのリンクを埋め込もうとしています http://www.newsfixed.com/ Word文書に、彼らは失敗しています。 Word for Macはサーバーの設定に非常に敏感で、特定のリンクの読み込みに失敗することがあります。 http://www.facebook.com/ および http://www.pinterest.com/ へのリンクでも同じ問題が発生するようです(ただし、googleへのリンク、 Twitter、Instagramなどは大丈夫です)

再現する手順:

  1. Mac用の新しいWord文書を作成する
  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/ 。インターネットサーバーまたはプロキシサーバーが見つかりません。」というエラーを報告します。

Word hyperlink error

それはどういうわけか https://stackoverflow.com/questions/17926225/Microsoft-office-hyperlink-issues に関連している可能性がありますが、方法がわかりません!

Pinterest.comのHTTP応答を見ると、私のサイトとpinterestの両方に共通していた、301ではなく、302の一時的なリダイレクトをHTTPSバージョンに提供することに関係している可能性があります。そのため、サーバー構成を変更して301を返すようになりましたが、違いはないようです。

私は古いバージョンのWordforMacを使用しています-12.3.6。新しいバージョンのWordでも発生するという報告があります(ただし、バージョン番号はありません。申し訳ありません)。どうやらこれは過去1週間に始まったばかりですが、SSLハンドシェイクとHeartbleedパッチに何らかの関係があるのでしょうか。 (もちろん、今週は証明書を再生成しました)

サーバーは、Ubuntuの標準のApache 2.4で、Django appをmod_wsgi経由で実行しています。

助けてくれてありがとう、

ブレンダン。

2
Brendan Quinn

ええと、なんとか機能させることができました...

WordはSSLチェッカーサイト( digicertsslshopper など)のすべてのチェックに合格しているにもかかわらず、(RapidSSL/GeoTrustからの)私のSSL証明書を気に入らないようです。

そのため、ApacheHTTPD構成でWordユーザーエージェントをキャッチする必要があることに気付きました。

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ドキュメントにいくつかのリンクを含めることができます。

私は 「Microsoftリンクの修正」Rubyアプリ に触発され、Rubyサーバーで同じことを行います。

これが、今週末に経験した痛みを誰かが回避するのに役立つことを願っています!

3
Brendan Quinn