“服务工作者”是否支持离线HTML表单数据?

时间:2015-02-17 07:36:44

标签: javascript security caching privacy service-worker

Service Worker本质上充当了位于Web应用程序之间的代理服务器。

我担心:ServiceWorker是否也支持离线表单? - 如果是这样,那么我的另一个问题清单是:

  1. 哪里将不完整的HTML表单数据存储在客户端(存储,会话,本地,数据库)?
  2. 以哪种形式存储用户填写的数据(加密等)
  3. 如何处理数据安全/隐私?返回的用户是同一个用户? - 如果一个用户在公共场所填写表格并丢失了互联网连接并留下了不完整的表格并继续前进,那么现在下一个直接用户可以看到不完整的表单数据,最后一个用户离开表单。

1 个答案:

答案 0 :(得分:3)

首先,服务工作者可能会做很多事情。例如,他们可以访问IndexedDB,因此始终可以从受控页面或服务工作者的上下文中保存和加载任意数据。

但是,由于服务工作者已注册,服务工作人员默认情况下不会做任何事情。只有当您在服务工作者中编写代码以挂钩不同的事件(installfetchmessage等)时才会感兴趣。

假设,如果您要在缓存HTTP资源的HTTP响应的服务工作者中编写代码,然后使用该缓存的响应响应请求的URL的fetch事件,那么浏览器将返回并且呈现与响应来自网络时相同的HTML。不会有任何特殊的“表单状态”与HTML响应主体一起缓存。

如果由于某种原因,您确实要保存“表单状态”,以便离开带有表单的页面的用户可以返回并继续编辑它,则必须独立于caches执行此操作暴露给服务工作者的对象。 (caches要求您使用Request个对象作为键,并将Response个对象存储为值。)

所以你可以使用IndexedDB来做这件事,或者你可以使用localStorage或其他任何东西来做。它独立于服务工作者,具体的隐私/安全考虑因素取决于实施者。