问题:
当我点击(或按住 CTRL 键并点击)Microsoft Word 2010(可能影响其他版本)中需要事先授权的链接时,我经常会被指向无效的 URL。从理论上讲,这是 Word 和服务提供商自己的重定向的问题,但我认为问题根本在于 Word。
我注意到点击后会有 1 秒到 2 秒的延迟。看来 Word 在打开我的默认浏览器之前正在验证链接。这是一个问题,因为它似乎在打开浏览器之前也在内部遵循 301/302 重定向,而是打开重定向 URL而不是使用最初指定的 URL。
症状:
- 在 Microsoft Word 中单击(或按住 CTRL 键并单击)链接时会出现滞后。
- 需要授权和重定向的网站链接将导致在重定向页面 URL 上打开默认浏览器,而不是在最初预期的 URL 上打开。如果网站没有干净/透明地将返回 URL 合并到登录页面 URL 中,这将导致您无法访问预期的页面。
- 返回 500 或 403 错误的服务器可能会被完全拒绝访问,而我只想在 Chrome/Firefox/等中打开它。这种情况会通过显示错误警报/对话框来实现,而无需离开 Word 本身。
示例 1:
这尤其会影响需要授权的链接。例如,我在 superuser.com 上发现一个需要授权的 URL,如果未授权则会重定向。最终结果是您永远无法到达预期的 URL。虽然这是超级用户重定向中的错误,但根本问题在于 Word。
- 链接粘贴到 Word 中:https://superuser.com/users/preferences/
- 在后台处理此 URL,并且由于它或 Internet Explorer 未登录,因此它自然会收到访问响应:https://superuser.com/users/login?ssrc=user_prefs&returnurl=http%3a%2f%2fsuperuser.com%2fusers%2fpreferences%2f0
- 最后,幸运的是,superuser.com 知道我已经登录,因此
returnurl
遗憾的是以下操作仍然无效:https://superuser.com/users/preferences/0
示例 2:
另一个演示不干净重定向行为的授权示例是 JIRA。即使您已经获得授权/登录,也会发生这种情况。
- 链接粘贴到word中:https://INSTANCE.atlassian.net/browse/ISSUE-1234
- Word 打开此 URL:https://INSTANCE.atlassian.net/login?dest-url=%2Fbrowse%2ISSUE-1234&permission-violation=true
- 即使您已登录 JIRA,您也不会被重定向到最初预定的 URL,因此您的旅程到此结束。
结论:
我该如何禁用此功能,或者是否有可能完全解决这个问题?
答案1
看来您没有将 Internet Explorer 用作默认浏览器?那么您可能遇到了“Microsoft Office 协议发现”。我的回答中有更多详细信息单击电子邮件中的超链接变得非常慢,这里是超级用户。
注册表解决方法单击 Office 文档中指向 SSO 网站的超链接时,您会被重定向到登录页面或错误页面,或者系统会提示您输入身份验证信息:
从 Office 到 Internet Explorer 或其他 Web 浏览器的超链接
如果单击 Office 文档中的超链接时出现此问题,而这些超链接直接打开 HTML Web 内容或重定向到 HTML 内容,则客户端用户可以通过启用注册表项将超链接导航发送到浏览器(而不是直接从 Office 绑定到超链接)来避免此问题。有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
218153单击超链接时出现错误消息:“无法找到 Internet 服务器或代理服务器”
注意:无论您安装了哪个版本的 Office,请在 Microsoft 知识库文章 218153 中指定的确切位置添加注册表项。
使用此注册表设置时,Office 使用的 HLINK 组件将在默认 Web 浏览器中打开超链接。此注册表设置影响所有 HLINK 客户端,而不仅仅是 Office。因此,请谨慎使用此注册表项。有关使用此解决方法时可能出现的问题的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
280680无法通过超链接访问 Office 文档
上述 KB218153 描述了这种情况发生的情况:
这强制 Shell 执行注册表项未出现在以下位置或未设置为 1:
对于安装在 64 位操作系统上的 32 位 Office 版本
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\9.0\Common\Internet
对于安装在 32 位操作系统上的 32 位 Office 版本或安装在 64 位操作系统上的 64 位 Office 版本
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\9.0\Common\Internet
因此,添加ForceShellExecute
值 1 应该可以停止这种行为。
对于较新的版本(例如 Office 365),可能需要阅读对上述内容的一些反馈,声称;
当前 Office 版本:16.0.13127.20296
...
请注意修复中的步骤 3:
在注册表编辑器中,浏览到以下子项之一(如果不存在则创建密钥):
我在几个论坛上读到了这个问题,我犯了和很多人一样的错误,必须将其设置为 9.0,而不是当前版本的 Office。另外,我希望这些都有更快的运行方式,就像我下面粘贴的那样,只需要在管理员命令提示符下运行即可
对于 64 位计算机上的 32 位 Office
REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\9.0\Common\Internet" /v "ForceShellExecute" /t REG_DWORD /d "1" /f
对于 32 位计算机或 64 位办公室
REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Common\Internet" /v "ForceShellExecute" /t REG_DWORD /d "1" /f