通过 Excel/Word 中的超链接打开的选项卡无法识别会话 cookie

Posted

技术标签:

【中文标题】通过 Excel/Word 中的超链接打开的选项卡无法识别会话 cookie【英文标题】:Tabs opened via Hyperlinks in Excel/Word not recognizing session cookies 【发布时间】:2021-03-13 18:44:47 【问题描述】:

我有一个使用 Cookie 会话变量进行身份验证的 ASP.Net 应用程序。用户登录后,他们可以为同一应用程序打开新的浏览器选项卡,这些选项卡会在会话 cookie 存在时自动登录。

单击另一个网页上指向应用程序中特定页面的超链接也可以正常工作 - 由于用户已经登录,因此无需登录。

但是,当应用程序的超链接在 Word/Excel 文档中时,此链接不会直接打开页面,而是会跳到登录页面。如果我从 Word/Excel 中复制/粘贴 Url 并将其粘贴到浏览器的 Url 栏中,它可以正常工作。

对这种行为有什么解释吗?在 Word/Excel 中单击链接时,浏览器是否会打开隔离会话?

编辑:似乎 Word/Excel 在打开浏览器选项卡之前会执行自己的检查。如果我使用不存在的链接,它不会打开选项卡。

【问题讨论】:

【参考方案1】:

不久前我们在我的工作地点遇到了这个问题,发现就像你提到的那样,MS Office 应用程序确实在幕后做了一些神秘的事情。这篇文章详细介绍了它的实际作用:https://docs.microsoft.com/en-us/office/troubleshoot/office-suite-issues/click-hyperlink-to-sso-website

在那篇文章的底部,他们建议了一种涉及元刷新的解决方法,这对我们有用。在我们的例子中,我们向请求管道中添加了一个方法,用于检查 User-Agent 标头中的 Microsoft 产品。如果找到,它会发送元刷新,触发浏览器使用现有会话,而不是尝试启动新会话(这就是您被重定向到登录页面的原因)。这里或多或少是代码:

    private static string MSUserAgentsRegex = @"[^\w](Word|Excel|PowerPoint|ms-office)([^\w]|\z)";
    protected void Application_OnPostAuthenticateRequest(object sender, EventArgs e)
    
      if (!Request.IsAuthenticated)
      
        if (System.Text.RegularExpressions.Regex.IsMatch(Request.UserAgent, MSUserAgentsRegex))
        
          Response.Write("<html><head><meta http-equiv='refresh' content='0'/></head><body></body></html>");
          Response.End();
        
      
    

【讨论】:

哇!我不知道这件事。让我试试然后回来。

以上是关于通过 Excel/Word 中的超链接打开的选项卡无法识别会话 cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何显示Word中的“开发工具”选项卡?

如何创建指向同一工作簿中的其他Excel工作表的超链接

SSRS超链接到同一电子表格上的选项卡

如何打开相邻选项卡中的第二个链接? [复制]

如何用LaTeX设置参考文献的超链接

目标空白在模态内部打开同一选项卡中的链接