公众号端接口关于userAgent报错的问题

194 阅读2分钟

代码情况

前段时间,在写一个公众号项目的时候遇到一个关于接口报错的问题。大致情况是这样的,当时有个接口在postman上测试没问题,但是到公众号上就会报错(当时联调接口是在微信开发者工具上联调的)。当时以为是请求体类型或者请求头不匹配的问题,也参照postman上的请求改了很久,但是最后就两种情况:

  • 情况一:接口能访问,状态为200,但是就是返回结果不对;
  • 情况二:接口不能访问,状态报500;

关于接口关于userAgent报错

因为有时候会返回500,所以叫后端看了下报错日志,后端报错显示如下:

企业微信截图_1685009242124.png 说的是用户代理个数必须在0~255之间,后端也不明白是怎么回事,研究了半天原来是我们公司自己用的框架限制了userAgent的字符数的问题。可能是因为公众号环境或者移动端的userAgent字符数会比pc端长导致接口不能请求成功。为此我还特地复制下了公众号环境端和pc端的userAgent字符进行对比:

  • 公众号环境端:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.05.2111300 MicroMessenger/8.0.5 Language/zh_CN webview/16849806766387967 webdebugger port/14341 token/226adb8e0753e5ef68c20a4d8286a2d0
  • pc环境端:Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1

很明显可能是因为移动端环境的原因,userAgent字符数会比pc端的多,导致接口报错。

解决办法

只需后端将userAgent的限制放大就完美解决了!