Azure托管React PWA偶发POST请求500错误排查问询
问题背景
我们有一个基于React 16.14.0的PWA,部署在Microsoft Azure高级层App Service计划上。近期偶发问题增多:连接应用时,UI对接的三个后端中某一个(或多个)会出现500错误,此时该后端的所有POST请求均失败,但GET请求正常(排除DNS问题);仅无请求体的POST请求例外。OPTIONS预检请求返回204,但实际POST请求返回500。
测试环境仅单实例,排除负载均衡问题。Azure监控工具无请求到达后端的记录(Application Insights、失败请求日志均无相关信息)。该问题影响所有后端:同计划内的.NET Framework 4.8.1后端、两个.NET 8后端均受影响。浏览器报错为Failed to load resource: net::ERR_FAILED。
疑问
- 为何仅影响POST请求?希望借此定位根因;
- 500错误是否可能由前端导致?曾了解到React(如react-router)可能返回500,但原以为500必来自后端,现存疑。
已尝试操作
- 通过Chrome DevTools禁用浏览器缓存;
- Chrome网络选项中绕过Service Worker;
- 重启后端App Service,问题依旧;
- 更换浏览器(Firefox也受影响);
- 使用旧版Chrome(通过Selenium测试);
- 用Fiddler捕获到500请求;
- 升级axios至最新版本;
- 将JS后端调用从XHR迁移至fetch;
- 为fetch请求设置cache为
no-store; - 排除CORS问题(同源站点也出现该错误,且CORS问题应是持续而非偶发);
- 清除所有站点数据、Cookie、缓存并强制刷新;
- 在Postman中使用相同HTTP头、请求体、Cookie等测试,请求正常;
- 确认问题至少3个月前出现,近几周频发;
- 影响Azure多区域(北欧、英国南部);
- 影响不同地域用户(美国西部的Selenium测试连接英国南部站点也出现随机失败)。
待尝试操作
- 将.NET 8后端从Windows App Service迁移至Linux(Kestrel)环境,排查是否为IIS问题;
- 清空Redis缓存中的所有身份令牌;
- 升级React及所有npm包(工作量大)。
临时修复方法
- 重启浏览器;
- 等待5-15分钟;
- 使用不同浏览器会话(如Chrome隐身模式)。
内容的提问来源于stack exchange,提问作者Toby Scamell
相关产品推荐
相关产品推荐

