简约而不简单的通用错误页面

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 线上某个项目由于后端 controller 层代码异常, 没有执行到渲染页面模版, 造成前端 Web 页面展示出来是一个空白的页面,俗称白屏。

思考


页面出现白屏, 势必需要从头到尾逐步去排查问题, 找到源头和原因


  1. 确认页面的 HTTP 请求有没有问题


  • 如果是 404 了(我们这次的现象就是 404 白屏), 那需要再往后端方向排查问题


  • 如果页面内容返回正常, 那很有可能是前端渲染方面的问题, 那就需要往前端方向去排查


  1. 分析 HTTP 服务器日志, 例如找运维查看 nginx 的访问日志有没有出现异常情况


  1. 分析 Application 服务器日志, 例如查看 tomcat 的应用日志有没有出现异常情况。 例如这次问题确定是应用层出现异常产生的 404


  1. 最后找到关键代码, 确定问题, 修复上线


想想排查问题的流程还是比较长, 比较费时的。如果出现错误时, 不是给一个白屏, 让人去猜哪里出现了问题, 排查一圈才能定位问题, 而是给出明确的错误信息, 有一个明确的错误页面就好多了。


设计


错误页面是一个通用的需求, 那么我们在设计的时候就应该考虑设计为一个通用的页面, 能够展示任意的错误信息. 即可以通过参数的形式控制页面的展现。


那么通用错误页面应当具备哪些关键的要素呢? 我们参考各种 404 页面, 抽象之后, 认为关键的三要素如下:


  1. 错误信息: 面向用户的错误提示


  1. 错误码: 面向开发者的错误提示


  1. 引导用户: 出错之后引导用户去"解决"这个问题, 避免走入死胡同, 卡死在这里了, 例如显示回退按钮, 引导用户重试


实现



通过 URL 参数来控制页面的展示和行为:


  • message 错误提示, 默认为: 抱歉,出错了


  • errorCode 错误码, 默认为: 500


  • showPrimaryBtn 是否显示引导按钮, 默认为: true


  • primaryBtnText 引导按钮的文案, 默认为: 返回


  • primaryBtnAction 引导按钮的动作模式: 回退(history-back), 返回到页面(goto)


  • gotoUrl 指定 goto 模式时要返回的页面, 默认为: //daojia.com


效果展示




在线demo








避免安全风险



  • 用于控制页面展示的输入参数(例如 message 参数), 因为是可以任意构造的, 要避免出现 XSS 漏洞就必须转义


https://jz-common-cdn.daojia.com/fe-common-page/error-page/index.html?message=%3Ch1%3E%E9%94%99%E8%AF%AF%3C%2Fh1%3E


  • 同理 gotoUrl 也是一个可以任意构造的输入参数, 涉及到引导用户跳转, 要避免出现钓鱼风险, 就必须做跳转域名的白名单限制,如


https://jz-common-cdn.daojia.com/fe-common-page/error-page/index.html?primaryBtnAction=goto&gotoUrl=%2


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
编解码 前端开发 JavaScript
带您一步步构建一个基本的动态新闻网站,包括页面布局、样式设计以及交互效果的实现
【6月更文挑战第14天】构建动态新闻网站实战项目,涉及页面布局、样式设计和交互实现。首页采用顶部导航栏、轮播图和新闻列表布局;新闻列表页按分类显示新闻,详情页展示完整内容并可添加相关推荐和评论。设计注重色彩搭配、字体选择和布局间距,实现轮播图效果、导航栏交互和响应式设计,提升用户体验。该项目有助于锻炼HTML和CSS技能,理解网页设计实际应用。
86 1
|
4月前
详尽分享简单通用的导航条
详尽分享简单通用的导航条
20 0
|
5月前
小清新卡通人物404错误页面模板源码
小清新卡通人物404错误页面模板源码
39 5
小清新卡通人物404错误页面模板源码
|
5月前
|
前端开发
美观的404错误页面源码
美观的404错误页面源码
171 8
美观的404错误页面源码
|
5月前
二次元风格404页面源码
二次元风格404页面源码
124 10
二次元风格404页面源码
|
5月前
为您的网站添加通用网站底部美化代码
为您的网站添加通用网站底部美化代码
124 1
为您的网站添加通用网站底部美化代码
|
前端开发 NoSQL Java
nanjustar 楠橘星后台管理系统(简洁版)使用导航
nanjustar 楠橘星后台管理系统(简洁版)使用导航
157 0
nanjustar 楠橘星后台管理系统(简洁版)使用导航
|
移动开发 前端开发 JavaScript
移动端H5通用表单验证插件
将表单验证的通用部分提炼出来,做成一个简易插件,方便调用。 已将源码放到GitHub上,名字叫zValidate。
移动端H5通用表单验证插件
移动端UI设计规范模板参考以及设计规范的好处
2018也快要过完了(-_-),我们的移动端的UI设计规范也层出不穷。很多APP设计师也要在年底给公司或者是团队做一个总结。那么一个像样的APP ui设计规范也是很有必要的作品回顾。
1906 0