You need to enable JavaScript to run this app. ASP.NET Core 5中AJAX调用接口返回400 Bad Request错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5中AJAX调用接口返回400 Bad Request错误如何解决

AJAX请求返回400错误排查解决方案

常见原因及对应解决方法

  • 1. 防伪令牌验证失败
    后端接口标注了[AutoValidateAntiforgeryToken]特性,ASP.NET会默认校验POST请求携带的防伪令牌,前端AJAX未携带该令牌会直接返回400错误。
    解决方法:
    首先在页面任意位置添加防伪标记生成标签:

    @Html.AntiForgeryToken()
    

    然后在AJAX的请求头中添加该令牌即可。

  • 2. 请求数据格式与contentType不匹配
    代码中设置了contentType: 'application/json; charset=utf-8',但传递的data是普通JS对象,没有整体序列化为JSON字符串,后端无法正确解析JSON格式的请求体,导致400错误。
    解决方法:
    将data参数整体序列化,同时后端参数加[FromBody]标记明确从请求体读取参数,修改后的完整代码如下:
    前端AJAX代码:

    function UserCheckId() {
        $.ajax({
            contentType: 'application/json; charset=utf-8',
            crossDomain: true,
            type: "POST",
            dataType: "json",
            url: '@Url.Action("UserCheckId", "Home")',
            headers: {
                "RequestVerificationToken": $('input:hidden[name="__RequestVerificationToken"]').val()
            },
            data: JSON.stringify({ qrcode: scannedQR[txt] }),
            success: function (data) {
                alert(data);
            }
        });
    }
    

    后端接口代码:

    [HttpPost]
    [AutoValidateAntiforgeryToken]
    public ActionResult UserCheckId([FromBody] string qrcode)
    {
        string result = qrcode;
        return Json(result, System.Web.Mvc.JsonRequestBehavior.AllowGet);
    }
    
  • 3. 其他可排查点
    打开浏览器控制台的「网络」标签,查看该AJAX请求的详细信息:

    • 确认请求的URL是否正确,无拼写错误
    • 查看请求体中的参数是否正常,不为空且格式符合要求
    • 若开启了跨域配置,确认后端的CORS策略是否允许当前站点的POST请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:36:13