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

ASP.NET Core API返回415不支持的媒体类型错误如何解决

415错误为服务端无法识别请求的媒体类型,你的问题由多处配置错误共同导致,修改方案如下:

前端问题及修复

你的fetch API调用存在3个核心错误:

  • fetch没有顶层的contentType、accepts配置项,请求头需要放到headers字段中声明
  • 直接传对象作为body会默认被转为[object Object]字符串,而非JSON格式,需要先通过JSON.stringify()序列化
  • 你已配置了全局CORS允许跨域,不要设置mode: 'no-cors',该模式下浏览器会自动禁止发送application/json等自定义Content-Type头,且无法读取响应内容

修复后的前端代码:

const googleResponse = (response) => {       
  const options = {
    method: 'POST',
    body: JSON.stringify({ TokenId: response.tokenId }),
    headers: {
      "Content-Type": "application/json",
      "Accept": "application/json"
    },       
    cache: 'default',
  }

  fetch(config.GOOGLE_AUTH_CALLBACK_URL, options)
    .then(r => r.json())
    .then(data => console.log(data))      
    .catch(e=>console.log(e))
}

后端问题及修复

你的后端代码存在2个模型绑定相关错误:

  • OauthToken类中的TokenId是公共字段而非公共属性,ASP.NET Core默认仅对公共属性做模型绑定,需要修改为带get/set访问器的属性
  • 接口参数建议显式添加[FromBody]特性,明确指定从请求体读取参数,避免路由匹配异常

修改后的后端代码:

public class OauthToken
{
    public string TokenId { get; set; }
}

[AllowAnonymous]
[HttpPost("signin-google")]
[Consumes("application/json")]
public async Task<IActionResult> GoogleLogin([FromBody] OauthToken userView)
{
  // 原有逻辑
}

修改完成后即可正常调用接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:10