Outlook web addins 用于iOS的Outlook web加载项不持久化第三方cookie-在Safari中工作

Outlook web addins 用于iOS的Outlook web加载项不持久化第三方cookie-在Safari中工作,outlook-web-addins,Outlook Web Addins,我正在为我们公司开发一个应用程序;由于传统原因,当用户登录时,我们使用 第三方JSESSIONID cookie 问题 我所看到的是,发送到客户机的cookie不会被保存,因此不会在后续请求时发送到服务器。因此,服务器不会认为用户已登录 通常我会将此归因于WebKit/View的阻止第三方Cookie功能,但我已在Safari设置中关闭了此功能 仅供参考,我们有一个基于相同代码的Ionic/Cordova项目,它在iOS中运行良好 如果我在MacOS(本机Outlook和Outlook Web

我正在为我们公司开发一个应用程序;由于传统原因,当用户登录时,我们使用 第三方JSESSIONID cookie

问题

我所看到的是,发送到客户机的cookie不会被保存,因此不会在后续请求时发送到服务器。因此,服务器不会认为用户已登录

通常我会将此归因于WebKit/View的阻止第三方Cookie功能,但我已在Safari设置中关闭了此功能

仅供参考,我们有一个基于相同代码的Ionic/Cordova项目,它在iOS中运行良好

  • 如果我在MacOS(本机Outlook和Outlook Web)上使用外接程序,它可以正常工作
  • 在Chrome/Firefox中也可以正常工作
  • 在Outlook for Android应用程序的Android中工作
我们的服务器也设置了所有正确的CORS头

由于外接程序只是一个webapp,我可以直接在iOS上的Safari中启动它,然后登录到那里;这也行得通

我知道苹果在版本12(CORS相关)中对WebKit进行了回归,但他们在最新版本的iOS 13/MacOS中对其进行了修复。但是,Outlook for iOS(WebView)似乎没有保存cookies。我可以看到,查看发送到服务器的请求,它们缺少发送到客户端的SessionID

当我通过代理(Charles)运行时,我还可以从请求中看到Cookie头没有设置

在Outlook for iOS中调试WebView几乎是不可能的(WebView不会显示在Mac上的Safari Developer菜单中)。我可以很容易地调试其他网络视图,如上面提到的移动项目

问题

Webview是否配置为明确防止第三方cookie?如果是,是否可以以某种方式将其关闭?我已经在Safari中关闭了第三方跟踪,但这似乎没有帮助

我一直不愿意使用DialogJSAPI,因为登录流在我的Mac上工作;这将大大改变我们登录的用户体验。此外,我还没有看到任何将此API用于移动项目的示例。它可以用于移动项目吗?如果可以,它会是什么样子


所有的例子都只与桌面有关。

大家好,我们正在试图找到这个问题的根源。您能在外接程序中运行此代码并检查客户端是否保留cookie吗<代码>document.cookie=“某物”;console.log(document.cookie)你能不能也检查一下它们是否在会话中被保留?我添加了你建议的代码。我只能在iOS设备上复制,无法通过Safari进行调试。我可以确认创建的cookie在会话中被保留(但如果Outlook重新启动,则不会保留)。我看到新cookie加上2个其他cookie(都是Microsoft cookie)。我看到正在发送JSESSIONID cookie。它不仅是httpOnly,也不会出现在写入控制台的cookie列表中。使用代理,我可以确认在下一个请求中没有发送任何cookie(不是我设置的,也不是我的JSESSIONID cookie)。我不知道WebView是否真的保存了JSSessionID cookie。您关于Dialog JS API的问题的答案是肯定的,IOS也支持显示对话框。您可以像对其他客户机一样使用它。是否为设备中的任何其他加载项发送cookie?