C# MVC 4.7应用无参AJAX POST调用在Chrome/Edge返回411错误排查
可排查的配置项清单
1. 本地系统网络层配置
- 检查是否开启了系统级VPN、抓包工具(Fiddler/Charles等)、代理加速类软件,这类工具会篡改POST请求头,空POST的
Content-Length头被篡改后会触发HTTP.sys的411校验。 - 查看Windows hosts文件,确认你访问的测试站点域名指向的IP和其他用户的指向一致,排除你访问的是单独的测试实例、实例配置和线上不一致的问题。
- 用管理员权限执行命令
netsh http show filter查看本地HTTP.sys的过滤规则,确认没有针对该站点的特殊拦截规则。
2. 服务器端IIS配置
- 检查IIS的请求筛选模块,确认没有针对你设备IP的严格校验规则,部分企业测试环境会对内部测试IP开启空POST拦截。
- 确认IIS的URL重写模块版本,旧版本重写模块会误将不带请求体的POST判定为非法请求,直接返回411。
3. 前端请求兼容调整
你当前的无参$.post写法属于简写,jQuery在Chromium内核和火狐内核下的空请求处理逻辑有差异:Chromium会主动加Content-Length: 0,火狐的请求头逻辑刚好绕过了服务端的校验。可以把请求改成显式传递空对象的写法规避问题:
$.post('/Controller/Method', {}, function (data) { $('#container').html(data); });
- 清理站点CDN缓存,确认你加载的jQuery版本和其他用户加载的版本一致,排除本地缓存的jQuery版本存在空请求处理bug的问题。
内容的提问来源于stack exchange,提问作者ERangers
相关产品推荐
相关产品推荐

