草庐IT

ios - html5 appcache在IOS 11.3上停止工作

coder 2024-01-12 原文

现在,我们知道这是IOS 11.3的问题,并且似乎仅针对Ipad。

通过appcache请求资源时,cookie被丢弃。如果您的资源落后于某些身份验证。它们将被重定向到您的身份验证页面。

如Apple所述,我们尝试打开/关闭实验功能。

删除资源的身份验证不是有效的永久选项。

我们正在寻找解决方案,而IOS的下一版本有望解决此问题(对于11.4 beta 2来说似乎如此)。更改应尽可能少以降低风险。

以下信息是我们尝试解决问题时所要经过的过程。迄今为止,尚未尝试有效的解决方案。服务人员是最合理的途径。

第1天
我们有一个应用程序可以在生产中正常运行一段时间(自上次部署以来已将近一年)。

当wifi不可用时,我们的应用程序使用应用程序缓存来启用离线模式。
我们的应用程序主要用于带有Safari的ipad和带有chrome的Surface pro。当前大多数情况是通过ipad报告的。

在过去的几天中,越来越多的用户开始无法加载缓存。更新至11.3后(在iphone 11.3上无法重现)并在开发机上使用google chrome桌面隐身模式,我们已经能够在ipad上重现问题。我们在版本为10.3.3的旧iPad上进行应用程序工作。

--Application Cache Error事件:资源获取失败(2)http://localhost:63330/client/vendor/kendo-ui/kendo.all.js--

事实
-它总是对同一文件进行阻止,经过一些测试,似乎所有文件都大于1.2Mb,在这种情况下,kendo为4.7Mb,最小的为1.7Mb。
-Fiddler不报告任何错误,所有文件的状态响应为200


1. Safari和Chrome的更新可能已更改
2.管理员可能已更改了ipad设置
3. Windows或ios的更新可能有所更改

由于safari和ios遵循同一发行版(2018年3月29日),因此它们可能已链接在一起,并且很可能是猜测,有谁知道为什么会发生这种情况?

在11.3的更改的Apple支持页面上找不到太多
https://support.apple.com/en-ca/HT208067
https://support.apple.com/en-ca/HT201222

更新2018年4月9日星期一
我们已经能够通过调试Ipad和我们拥有的mac mini来重现该问题。但是,问题有所不同,因此,我们目前以隐身方式丢弃了在台式机上的Chrome浏览器中找到的内容。

以下是新事实:

  • 使用appcache下载文件时未提供Cookies。第一个文件请求被拒绝并重定向到登录页面。

  • [警告]不建议使用ApplicationCache。请使用ServiceWorkers
    代替。 (192.168.0.152,第2行)
    [错误]无法加载资源:
    服务器响应状态为401(未经授权)(cache.manifest,
    第0行)
    [错误]无法获取应用程序缓存清单,
    因为清单显示了401响应。
    [错误] 2018-04-09 12:01:51:
    应用程序缓存错误
    logMsg(logDecorator.js:111)
    错误(logDecorator.js:128)
    (功能匿名)(applicationCacheUpdateSrv.js:121)
    调度(jquery-1.10.2.js:5109)
    句柄(jquery-1.10.2.js:4780)

    -解决验证问题后,我们的IDBDatabase出现了问题,可能与我们删除的授权有关(目前正在调查中)

    IndexedDB请求错误(获取所有关系)-> NotFoundError:失败
    在'IDBDatabase'上执行'transaction':指定的对象之一
    找不到商店。


    我们通过使用Mac的Charles Proxy找到了这一点。因此,我们删除了对静态文件和主页的身份验证。这似乎可行,但是我们的文件将是公开的,这实际上不是一个选择。

    类似问题:
    Cache-Manifest How to handle authentication cookies?

    更新2018年4月10日星期一

    与IndexDB错误无关。由于缺少授权,数据库未正确初始化。

    当前,我们添加了一个不需要授权的替代主页,而不是从默认主页中删除了授权。清单缓存将调用它并正确下载。

    更新2018年4月12日星期一
    我们试图保护静态文件,最后在查询URL中添加了 token 。虽然它可以正常工作并且我们可以对请求进行身份验证(请注意,由于我们没有Cookie可以对用户进行身份验证,所以身份验证远非完美无缺),Url现在不同于在缓存的主页中进行的自定义身份验证本身就一文不值。

    我们还需要根据用户生成的 token 重写缓存页面的所有url。在我们的案例中,它涉及抛出ASP.Net MVC捆绑包功能,也许可以进行自定义?在这一点上,我们认为尝试使用ServiceWorker可能会更容易,因为appcache已被弃用。这不保证cookie将随ServiceWorker一起传递...

    更新2018年4月19日星期一
    昨天我们从苹果公司得到了一些回报。他们要求尝试在“设置”>“Safari”中阻止“跨站点跟踪”属性(打开和关闭),并尝试在“设置”>“Safari”>“高级”>“实验”中使用“实验性”功能(提及ServiceWorkers,但尝试了所有方法)

    不幸的是,目前它对我没有任何改变。

    注意:删除线与该问题没有直接关系的某些部分

    更新于2018年5月25日
    在顶部添加了一个部分来恢复情况并使问题更突出。

    最佳答案

    截至2018年4月25日,我们尝试使用iOS 11.4 beta,它似乎可以解决此问题。根据部署时间表,根据this,它应在大约一个月内可用。

    但是,在那之前转为服务人员可能是一个好主意。

    Here是Google的一个示例。
    Here是介绍该主题的视频

    如果我们要转到服务人员,我将添加一个示例

    关于ios - html5 appcache在IOS 11.3上停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49694395/

    有关ios - html5 appcache在IOS 11.3上停止工作的更多相关文章

    1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

      我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

    2. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

      在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

    3. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

      所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

    4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

      这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

    5. ruby-on-rails - Ruby url 到 html 链接转换 - 2

      我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

    6. Ruby 文件 IO 定界符? - 2

      我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

    7. ruby-on-rails - capybara ::ElementNotFound:无法找到 xpath "/html" - 2

      我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'

    8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

      1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

    9. ruby - 如何使用 Ruby 将 CSV 文件读入 HTML 表格? - 2

      我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda

    10. ruby - 如何使用 Nokogiri 解析纯 HTML 表格? - 2

      我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315

    随机推荐