You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core Minimal Web API返回JSON在Chrome与Firefox的差异问题

解决方案

问题出在直接操作HttpContext.Response.Headers时,响应可能已经开始发送,导致头设置失败抛出异常——Chrome对这个异常处理更严格,而Firefox虽能显示JSON高亮但后台实际已报错。要同时兼容两个浏览器且仅针对该端点适配,推荐使用Minimal API原生的IResult返回方式,避免直接操作HttpContext:

app.MapGet("/api/getLogs", async () =>   
{
    var data = await Data.GetLogs(); // data是已格式化的JSON字符串
    return Results.Text(data, "application/json");
});

为什么这个写法有效:

  • Results.Text会在响应正式启动前正确设置Content-Type: application/json头,不会触发"Headers are read-only, response has already started"异常,Chrome能正常接收并解析内容。
  • 明确的JSON内容类型头会让Firefox识别出返回内容是JSON,自动启用语法高亮。
  • 仅针对/api/getLogs这个端点生效,不会影响其他API请求的处理逻辑。

之前写法的问题分析:

  • 直接修改context.Response.Headers时,可能框架已经通过中间件写入了部分响应头或开始发送响应,此时再修改头就会触发异常。
  • 移除头设置后,响应的Content-Type可能被默认设为text/plain,Firefox不会对纯文本进行JSON高亮,虽然能显示内容但失去了格式化高亮效果。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:58:18