大促期间发现,部分用户在APP内无法打开H5页面,排查原因为:部分上游业务传入的UTM值过长,写入UA后导致部分用户在APP内无法打开h5页面(空白页)。
UA(UserAgent)是浏览器提供的标准用户代理头,此字段可被服务端(UA作为http请求header中的字段)和h5(UA是navigator的基础元素之一)访问,为公开信息。因http请求header有长度限制(一般nginx配置为4k),所以UA过长会导致http请求头过大,继而被服务器拒绝访问,在客户端就表现为空白页。
为了降低因UA过长导致h5页面无法打开的风险,经数据埋点、Webview团队、数据中台等各方会议讨论,计划精简UA,对UA中的埋点字段进行以下调整:
- 删除osp、apv、usc、ucp、umd、utr六个字段,其中osp、apv与UA中固定基本信息部分重复,可分别采用UA中固定第二位和固定第三位字段进行兜底;usc、ucp、umd、utr四个UTM字段与xxv字段信息冗余(xxv由四个UTM参数组装拼接而来);
- 限制xxv、ref字段的长度,其中xxv限定长度为400字节,超过限制则整体丢弃,置空处理; ref限定长度为1000字节,超过限制则去掉query部分,仅保留去参的URL地址;