我一直在处理具有自定义错误页面的Spring MVC应用程序,这些页面返回一般错误消息,堆栈跟踪作为HTML注释。我目前正在使用HTML5的Appcache开发此应用程序的离线功能。我的清单是这样的:
CACHE MANIFEST
CACHE:
... my explicit entries (not relevant) ...
FALLBACK:
... some fallback entries (not relevant) ...
<!-- This next line is relevant --!>
/ pageNotFoundOffline.html
SETTINGS:
prefer-online
当用户无法连接到服务器时,应该为之前缓存的404页面提供服务,问题是当发生错误时它也会为此404页面提供服务,从而使自定义错误页面完全无效在应用程序中实现。
为什么我要这样做?我希望每当用户尝试访问我的应用程序上的任何页面并且请求失败并且404(因为没有可用的因特网连接或因为服务器已关闭)时,该用户被告知请求失败并且他或她正被重定向到我们的离线功能,我也想告知用户他或她成功到达我们的服务器但发生了内部错误(通过自定义错误页面)。
是否有针对此问题的工作方法?,我想要完成的是仅当存在404异常时才提供缓存的404页面,并且当存在内部时显示服务器返回的自定义错误页面错误。
答案 0 :(得分:0)
我担心使用appcache是不可能的 - 回退会拦截所有服务器错误。 specification for appcache说:“如果这导致重定向到另一个来源的资源(指示强制网络门户),或4xx或5xx状态代码或等效,或者是否存在网络错误(但如果用户取消了下载),然后从缓存中获取与回退命名空间f对应的回退条目的资源。中止这些步骤。“
如果您可以使用更现代的做事方式Service Workers,我建议您使用它,因为这样可以让您按照自己的意愿行事。