Javascript Office JS ui.displayDialogAsync在关闭时丢失会话cookie

Javascript Office JS ui.displayDialogAsync在关闭时丢失会话cookie,javascript,session-cookies,office-js,Javascript,Session Cookies,Office Js,我正在尝试使用OfficeJSAPI构建一个Word附加组件,它与外部web服务(在我的控制下)通信 我正在使用ui.displayDialogAsync打开一个对话框,它会立即重定向到外部服务器的登录页面(重定向是为了绕过相同的域限制) 当用户正确输入其登录详细信息时,服务器会发回会话cookie 不幸的是,在旧版本的Word 2016中,当对话框在Word中关闭时,所有会话cookie都会被遗忘,并且从加载项发送到web服务的任何进一步请求都会被拒绝,因为没有发送cookie 该问题在Wor

我正在尝试使用OfficeJSAPI构建一个Word附加组件,它与外部web服务(在我的控制下)通信

我正在使用ui.displayDialogAsync打开一个对话框,它会立即重定向到外部服务器的登录页面(重定向是为了绕过相同的域限制)

当用户正确输入其登录详细信息时,服务器会发回会话cookie

不幸的是,在旧版本的Word 2016中,当对话框在Word中关闭时,所有会话cookie都会被遗忘,并且从加载项发送到web服务的任何进一步请求都会被拒绝,因为没有发送cookie

该问题在Word 2016的批量许可版本中表现出来,但在Word 2016的Office 365版本中却没有表现出来,后者的版本/内部版本号似乎更高

如果我使用Fiddler查看请求/响应,我可以看到对话框内部发出的请求与对话框关闭后发出的请求来自不同的进程ID

出于安全原因(一旦用户关闭浏览器,会话需要终止),我不能使用持久cookie,而且持久cookie似乎与IE共享,我们需要在IE和Word中同时拥有独立会话(cookie中存储了一些重要状态)


是否有其他人遇到过这种情况/知道如何避开它。

对话框在不同的进程中运行,这是正确的

有关信息,请参阅:

请注意: 将信息存储在主机窗口和对话框都可以访问的地方。这两个窗口不共享公共会话存储,但如果它们具有相同的域(包括端口号,如果有的话),则共享一个公共本地存储

因此,选择一:如果满足要求,就使用本地存储


选项二:您可以使用名为Office.context.ui.messageParent()的函数向主机(TaskPane)发送会话ID,该会话ID需要存储并从TaskPane存储。对话框在正确的单独进程中运行

有关信息,请参阅:

请注意: 将信息存储在主机窗口和对话框都可以访问的地方。这两个窗口不共享公共会话存储,但如果它们具有相同的域(包括端口号,如果有的话),则共享一个公共本地存储

因此,选择一:如果满足要求,就使用本地存储

选项二:可以使用名为Office.context.ui.messageParent()的函数向主机(TaskPane)发送消息,其中包含它需要存储的会话ID,并从TaskPane中存储该会话ID