项目的架构是 Vue+SpringBoot ,也上线了一段时间。最近将前端页面嵌套了一个 APP 中,测试阶段中发现,中国移动网络跳转到我们系统时,会卡在首页,电信、联通、WIFI 都没有这个问题。又精确了一点,最后确定只有苹果手机的中国移动网络访问时会出现该问题。
追踪请求链路,定位到了前端容器 nginx 那里,从日志看,nginx 接收到了第一个请求,返回状态200,但是后续的请求并没有触发,后端也没有请求日志。
搞了一天也没啥头绪,最后请了个大佬过来。
大佬了解清楚后,在前端服务器上使用了
curl -i 'localhost:80/项目名'
即抓取上面描述的可以通过的那个请求,得到包含 http response 的头信息,连同网页代码一起。
通过返回代码,发现会请求一个地址:
https://appx/web-view.min.js
就是卡在了这里。
排查前端代码发现,这是为了前端页面适配嵌套 APP 引入的一个类库。
查问题时,还顺便使用了 CSDN 的 ChitGPT 得到如下回复:
https://appx/web-view.min.js 是一个JavaScript文件,通常用于在Web应用程序中嵌入一个内嵌式的Web浏览器(Web View)。它提供了一系列API,使开发者能够控制Web View的行为和属性,例如控制页面的加载、处理页面的事件、访问页面的JavaScript对象等等。在移动端应用中,Web View通常用于显示网页内容、嵌入第三方Web应用或者提供一些额外的功能。具体而言,https://appx/web-view.min.js 可以帮助开发者实现以下功能: 1. 加载网页内容:开发者可以使用https://appx/web-view.min.js向Web View中加载指定的网页内容,并控制加载的方式和进度。 2. 处理页面事件:开发者可以使用https://appx/web-view.min.js来监听页面事件,例如页面加载完成、页面跳转、表单提交等等。 3. 访问页面JavaScript对象:开发者可以使用https://appx/web-view.min.js来访问内嵌页面的JavaScript对象,例如获取页面中的DOM元素、调用页面中的JavaScript函数等等。 4. 提供额外的功能:开发者可以使用https://appx/web-view.min.js来为Web View提供一些额外的功能,例如显示进度条、实现JavaScript与Native代码的交互等等。 总之,https://appx/web-view.min.js是一个非常有用的工具,可以帮助开发者轻松地在Web应用程序中嵌入一个内嵌式的Web浏览器,从而提供更加丰富的功能和用户体验。
好吧,把这段代码注释掉,问题解决。
(图网,侵删)