重定向到 HTTPS 的 Office for Mac 超链接无法加载,并显示“无法打开。无法找到 Internet 服务器或代理服务器。”

重定向到 HTTPS 的 Office for Mac 超链接无法加载,并显示“无法打开。无法找到 Internet 服务器或代理服务器。”

我们的用户正在尝试嵌入我们网站的链接http://www.newsfixed.com/在 Word 文档中,它们会失败。Word for Mac 似乎对服务器配置非常敏感,有时会无法加载某些链接。同样的问题似乎也发生在http://www.facebook.com/http://www.pinterest.com/(但链接到谷歌、推特、Instagram 等都可以)

重现步骤:

  1. 创建新的 Word for 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、卫报、纽约时报、Instagram 和 Twitter 可以工作,但 Facebook 和 Pinterest(以及我的网站 www.newsfixed.com)则不行。Word 报告错误,“无法打开http://www.pinterest.com/。无法定位 Internet 服务器或代理服务器。“:

Word 超链接错误

这可能与https://stackoverflow.com/questions/17926225/microsoft-office-hyperlink-issues但我不知道该怎么做!

从 pinterest.com 的 HTTP 响应来看,这似乎与提供 302 临时重定向到 HTTPS 版本有关,而不是 301 - 这是我的网站和 pinterest 的共同点。所以我更改了服务器配置,现在返回 301,但似乎没有任何区别。

我使用的是旧版本的 Word for Mac —— 12.3.6。我收到报告说,这种情况也会发生在较新版本的 Word 上(但没有版本号,抱歉)。显然,这种情况是上周才开始发生的,这可能与 SSL 握手和 Heartbleed 补丁有关吗?(我当然在本周重新生成了我的证书)

该服务器是 Ubuntu 上的标准 Apache 2.4,通过 mod_wsgi 运行 Django 应用程序。

谢谢你的帮助,

布伦丹。

答案1

好吧,我设法让它工作了......

似乎 Word 不喜欢我的 SSL 证书(来自 RapidSSL/GeoTrust),即使它通过了 SSL 检查器网站的所有检查(迪吉特 sslshopper和更多)。

因此我意识到我必须在我的 Apache HTTPD 配置中捕获 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 服务器中完成同样的事情。

我希望这能帮助某些人避免我这个周末所经历的痛苦!

相关内容