Asp.Net Core返回404状态码时Firefox显示空白页Chrome正常如何解决
问题原因
Firefox 对空响应体的404状态码处理逻辑和 Chrome 不同:当404响应的Content-Length为0时,Chrome 会自动加载内置的默认404错误页,Firefox 则会直接渲染空白页。你当前代码返回NotFoundObjectResult(null)生成的就是无内容的空响应,因此会触发该兼容问题。
解决方案
方案1:返回非空响应内容
直接修改接口返回逻辑,传入非空的响应内容即可,示例代码如下:
[HttpGet] [Route("OpenBlobFile", Name = "url")] public async Task<ActionResult> OpenBlobFile(string fileName, string folder) { // 方式1:返回文本提示 return NotFound("请求的Blob文件不存在,请检查参数是否正确"); // 方式2:返回结构化的错误对象 // return new NotFoundObjectResult(new { Code = 404, Message = "资源未找到" }); }
如果需要触发浏览器内置的错误页,可确保返回的HTML格式响应内容大小不低于512字节,即可符合Firefox的错误页渲染规则。
方案2:启用状态码页中间件
如果希望项目全局统一处理状态码返回,可在项目启动配置(Program.cs/Startup.cs)中添加状态码页中间件:
// 启用默认状态码响应页,会自动为4xx/5xx状态码生成符合要求的响应内容 app.UseStatusCodePages(); // 也可以配置跳转到自定义错误页 // app.UseStatusCodePagesWithRedirects("/CustomError/{0}");
配置后返回404时框架会自动生成完整的响应内容,不会出现空白页问题。
额外排查点
如果该接口是文件下载接口,需要确认404返回时没有携带Content-Disposition: attachment响应头,该头会让Firefox将响应识别为下载文件,空内容时也会出现空白页。
内容的提问来源于stack exchange,提问作者Muhammad Sajid
相关产品推荐
相关产品推荐

