OpenID Microsoft 登录后,PWA 在 Safari iOS (13.5) 中冻结导航点击

2023-12-28

OpenID 授权用户后 PWA 冻结 [iOS Safari Standalone]

我为我们的安全人员构建了一个简单的 PWA,允许员工单击链接并查看有关我们公司在各种事务上的政策的内容。该应用程序使用 Microsoft 的 OWIN 中间件库来授权我们的员工通过其企业 Microsoft 登录凭据访问该应用程序。当用户单击登录页面上的“员工登录”提示时,他们将被重定向到 Microsoft 的域以完成登录过程。登录完成后,他们将被重定向回我们应用程序的主页。

问题

问题出现了only当 iOS 用户 (v13) 将应用程序固定到主屏幕,然后以独立模式启动应用程序时,并且仅after用户已完全终止应用程序然后返回。我们已经在 Chrome、Safari(非独立模式)、Firefox 上测试了该应用程序,这些浏览器中不存在该问题。该应用程序可以无缝运行,直到用户完成 Microsoft 登录并重定向回主页。此时,如果用户单击指向另一个页面(在应用程序内)的链接,则该应用程序将完全锁定,不会响应进一步的按钮单击,并且不会加载用户提示的页面。控制台中不会抛出任何错误。

我们发现,如果用户切换到另一个应用程序(即使只是一秒钟),然后在锁定时切换回我们的 PWA,一切都会立即恢复正常。此时,用户尝试导航到的页面会立即加载,无需进一步提示,并且应用程序在此之后可以 100% 无缝运行。只有默认页面的初始版本会冻结。

潜在原因

我目前的工作理论是,问题是由以下某些组合引起的:

  • 重定向到 Microsoft 登录门户。当用户被发送到 Microsoft 进行身份验证然后被发送回我们的域时,会话/cookie 连续性可能会出现问题。
  • iOS 的独立模式。结合上述情况,使用第三方身份验证并短暂离开 PWA 域是否有可能导致未来页面导航出现问题。没有其他浏览器或设备存在此问题,这一观点得到了支持,而且我的研究表明 Apple 对 PWA 的支持仍处于早期阶段。
  • 服务人员失败。我们已经进行了大量测试,以确保在用户首次进入站点时正确安装和注册 Service Worker。我们会检查重新注册软件,以防万一它在页面导航中的任何点被删除。我们确信,在验证有一个活跃的 Service Worker 处理页面 GET 请求后,用户会被重定向回我们的主页。我还测试了在服务工作人员注册期间显式缓存可从我们的主页访问的链接页面,以查看从缓存提供页面是否可以缓解该问题。它没。这是 sw.js 中处理获取请求的代码(取自 Google 的便捷指南):
    // "cache-first" approach for requests from client. Will try to get the file from the cache.
    // If no match found, it will send the request onto the network. If both fail serve fallback page.
    self.addEventListener("fetch", function (event) {
        if (event.request.method !== "GET") return;
        event.respondWith(
            // Try the cache
            caches.match(event.request).then(function (response) {
                console.log("[service worker] attempting to fetch file from cache...");
                return response || fetch(event.request);
            }).catch(function () {
                // If both fail, show a generic fallback:
                return caches.match(offlineFallbackPage);
            })
        );
    });

我已经使用Mac独立远程调试了PWA,并且我已经验证的是,当用户单击链接导航到新页面时触发的单击事件得到了正确处理,因此问题确实出现在加载链接页面本身。除此之外,远程调试已确认在尝试导航到站点上的其他页面时根本不会触发 HTTP GET 错误(或任何其他错误)。

这是我构建的第一个 PWA,对于所有这些东西我还是个新手。所以我很想知道我是否遗漏了任何东西或者我可以从这里去哪里。我搜索了所有论坛,但似乎无法在任何地方找到答案。谢谢!


在我的具体案例中,我遇到了非常相似的问题。但是当重定向到应用程序主页 url 时,我的 pwa(与 PwaBuilder 打包)在 oidc 注销时冻结。 在 XCode 中我观察到一个错误:

could not signal service com.apple.webkit.webcontent 113 could not find specified service

我的身份提供程序重定向回来时没有出现问题,但启动我正在使用的 OIDC 客户端库的以下重定向时出现问题oidc-客户端-ts https://github.com/authts/oidc-client-ts。事实证明有设置窗口位置/URL 的两种可能方法 https://www.w3schools.com/js/js_window_location.asp、分配或设置 href。并且库默认使用分配。更改分配以替换 href 导致我的 iOS PWA 不再冻结。非常具体的用例,但它可能对其他人有帮助......

auth.signoutRedirect({
  post_logout_redirect_uri: process.env.BASE_URI,
  redirectMethod: "replace",
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenID Microsoft 登录后,PWA 在 Safari iOS (13.5) 中冻结导航点击 的相关文章

  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 检测 AvPlayer 何时切换比特率

    在我的应用程序中 我使用 AVPlayer 通过 HLS 协议读取一些流 m3u8 文件 我需要知道在流会话期间 客户端切换比特率多少次 我们假设客户端的带宽正在增加 因此客户端将切换到更高比特率的段 AVPlayer能检测到这个开关吗 T
  • 频繁绘制 CGPath 时的性能

    我正在开发一个将数据可视化为折线图的 iOS 应用程序 该图被绘制为CGPath在全屏自定义中UIView最多包含 320 个数据点 数据经常更新 图表需要相应地重新绘制 刷新率为 10 秒就很好了 到目前为止很容易 然而 我的方法似乎需要
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • NVActivityIndi​​catorView 仅适用于特定视图

    我正在使用这个库https github com ninjaprox NVActivityIndi catorView https github com ninjaprox NVActivityIndicatorView用于显示加载指示器
  • WhatsApp 显示警告“此项目无法共享。请选择其他项目。”对于 iOS 应用程序。

    我正在开发一个 iOS 应用程序 在该应用程序中 我有社交共享功能 并且社交共享功能使用深度链接来共享 URL 该网址共享对于所有应用程序都运行良好 除了WhatsApp 它会显示一个警报弹出窗口 此项目无法共享 请选择其他项目 以下是我的
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 苹果企业程序分发问题[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 这个问题涉及到Apple iOS 开发者企业计划 http developer apple com programs ios enterprise 我
  • Xcode 存档上传失败并出现错误

    我正在尝试从 xCode 将新版本上传到 iTunesConnect 但每次我都会遇到此问题 问题是什么 我该如何解决这个问题 最近 我开始在上传过程中遇到问题 Xcode 经常卡住 最终会因您看到的第二个错误而失败 受够了一段时间后 我转
  • 在 Xcode 5.1 中构建时,“您必须提供 5.5 英寸 Retina 显示屏的屏幕截图,因为您的应用程序二进制文件支持 5.5 英寸 Retina 显示屏”

    我更新了一个旧应用程序并修复了一些小错误 该应用程序是使用 Xcode 5 1 编译的 无法使用资产目录或添加 iPhone 6 和 6 Plus 图像 但当我尝试提交它进行审查时 我仍然收到此错误 您必须提供 4 7 英寸 Retina
  • 我可以更改键盘方向吗?

    例如我用这段代码关闭自动旋转 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation interfaceOrientation return NO BOOL sh
  • 在 iOS 上,UIView 的 Frame 属性未在动画内部分配

    在我的 iOS 应用程序中 我尝试执行以下简单的动画 void dismissToolbar NSLog bx f by f bw f bh f toolbar frame origin x toolbar frame origin y t
  • iPad - 无法在框架内滚动

    我无法滚动 iPad Safari 中框架内调用的 pdf 我已经尝试过两件事 2 指滚动 使用对象 嵌入代替框架 但这是行不通的 事实上我已经尝试了很多东西 溢出 高度等等 请帮我 先感谢您 根据这篇文章http support appl
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • 如何在 Xcode 4 中在 .h 和 .m 之间切换

    刚刚安装的 Xcode 4 到目前为止一切顺利 除了 Apple 更改了所有键盘快捷键 有人知道如何在 h 和 m 之间切换吗 苹果改变了各种快捷键 但要在标头和实现之间切换 新的快捷键是 You can change it back to
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • 如何在 UICollectionView 的节标题中动态添加标签和按钮?

    请帮助我如何水平添加标签和水平添加类似的按钮 但每个按钮应像另一个部分一样在每个标签的下方对齐 这应该在 UICollectionView 的标题中动态发生 因为标签和按钮的数量根据我的数据 我想制作一种 Excel 类型的布局 并在标题中
  • 多次添加同一个子视图来查看

    我不知道这是否可行 但我想做的是将子视图多次添加到视图中 我尝试过这样的事情 self view addSubview newView newView center CGPointMake 160 100 self view addSubv
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画

随机推荐

  • 拳击,已经成为过去式了吗?

    这样做有什么意义吗 public static void Write
  • 构建詹金斯缺失的历史

    我刚刚为我的项目设置了一个新的 Jenkins 实例 版本 2 19 4 但是 当我尝试生成多个构建进行测试时 我发现构建历史记录仅向我显示一个历史构建 升级之前 至少显示两个或更多 詹金斯中有一个地方可以设置应该显示的历史构建的数量吗 在
  • 我可以将 Google Places API 中的姓名、地址和纬度/经度存储在我自己的数据库中吗?

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 Google Places 关于存储信息的术语可能有点令人困惑 我希望有人能提供一些说明 我想构建一个数据库并收集有关企业的独特数据
  • MSBuild 是否需要安装 Visual Studio?

    我正在使用 Atlassian Bamboo 设置构建服务器 MSBuild 包含在 NET 框架中 所以我相信我至少可以在没有 VS2010 的情况下很好地构建 NET 应用程序 我们主要使用 C 进行开发 我是否需要在构建服务器上安装
  • 异步函数何时实际返回待处理的承诺?

    我用谷歌搜索了这个问题很多次 但我看到这个问题的唯一答案是 异步函数总是返回一个承诺 但我没有找到任何可以回答这种情况何时真正发生的问题 是一进入异步函数还是一遇到第一个await关键词 我刚刚写了这段代码 async function m
  • 使用 JavaScript 平滑更改文本

    我正在制作一个登陆页面 其中的短语会随着选定的单词而不断变化 例如 设计更好的网站为客户制作 将切换第一个或最后一个单词成为 开发更好的网站为客户制作 然而 由于 开发 这个词比 设计 更大 因此文本的其余部分最终会被推来推去 而无法顺利过
  • 使用 cURL 测试 AWS API Gateway

    我确实有一个受 AWS IAM 授权保护的简单 AWS API Gateway 实施 我只想通过 cURL 从命令行进行测试 curl location request GET https
  • 在 WPF 中使用快速彩色文本框进行语法突出显示

    是否可以在 WPF 中使用快速彩色文本框进行语法突出显示 http www codeproject com Articles 161871 Fast Colored TextBox for syntax highlighting http
  • 在 Notepad++ 中智能突出显示时显示出现次数

    是否可以显示智能突出显示的单词出现的次数 我的意思是当你双击一个单词时 在 Matlab 中 例如通过让光标触摸单词并在工具栏中显示它来激活智能突出显示即刻例如说4 usages of weight found 搜索单词 短语将为您提供相同
  • jQuery 1.8 中的 pipeline() 和 then() 文档与现实

    更新 这个问题现在已经过时了 因为文档是准确且最新的 我一直在探索 jQuery Deferred Promise API 但我对两者之间的差异感到非常困惑pipe and then 在哲学上和 jQuery 文档中 我发现从 jQuery
  • 函数(d)和函数(d,i)之间的区别?

    Every D3js初学者我一定正在经历这个想法 我对此非常确定 我已经在这个东西上呆了几个小时了 但我不知道如何使用它 也不知道它是什么不同之处它们之间 function d return d function d i return d
  • 如何从栅格中提取其最高值位于多边形内的 xy 坐标?

    给出的是一个栅格以及一个 SpatialPolygonsDataframe 为了检索多边形区域内栅格的最高值 可以使用 raster extract 效果很好 如何另外获取多边形区域内栅格提取的最高值的坐标 create raster r
  • 如何使用 WebMatrix 连接到 SQL Server 数据库?

    我添加了一个连接 它显示在 其他连接 中 但我似乎无法引用它 var db Database Open MyNewConnection 抛出异常 Connection string MyNewConnection was not found
  • 在 Azure Function 中添加自定义遥测属性

    我有一个 Azure 函数 v2 其中数据通过 HTTP 主体以 JSON 形式传入 我想使用标准在 Application Insights 中记录一些 JSON 数据Trace and Request events 到目前为止我尝试过的
  • 使用 Task.WhenAll 执行多个任务时 foo.Start() 出现错误

    我收到此错误 可能无法在承诺式任务上调用 Start 所以我注释掉了 Start 我再次尝试并收到此错误 可能无法在已完成的任务上调用启动 那么我应该怎么做才能使其正常工作呢 var dashboardDailyAgeAnalysis Da
  • 如何在 Visual Studio 中更快地键入“{0}”?

    在 C 中 通常需要输入 0 1 等格式化字符串时string Format https msdn microsoft com en us library system string format v vs 110 aspx or Cons
  • 使用正则表达式验证 Youtube 播放列表 URL

    如何验证 YouTubeplaylisturl 使用正则表达式 我找到了验证其他问题视频的答案 http www youtube com watch v w S 但我无法验证这样的网址 http www youtube com watch
  • OSX El Capitan 上的 crontab 是否损坏?

    问题 Is cron应该在 OSX El Capitan 中工作吗 背景 我在 OSX 上使用 crontab 已经很多年了 但在 El Capitan 上它似乎不起作用 我将我的用户名添加到 usr lib cron cron allow
  • 将省略号传递给另一个可变参数函数[重复]

    这个问题在这里已经有答案了 我有大约 30 个可变参数函数 每个都接受路径作为最终参数 例如 bool do foo struct f int q const char fmt 在每个函数中 我必须检查扩展格式是否小于或等于特定大小 因此
  • OpenID Microsoft 登录后,PWA 在 Safari iOS (13.5) 中冻结导航点击

    OpenID 授权用户后 PWA 冻结 iOS Safari Standalone 我为我们的安全人员构建了一个简单的 PWA 允许员工单击链接并查看有关我们公司在各种事务上的政策的内容 该应用程序使用 Microsoft 的 OWIN 中