Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

记录今日份的bug

在使用SpringBoot + Themleaf时登录请求报错

Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

关键代码如下:

ajax请求:

function login() {
    $.modal.loading($("#btnSubmit").data("loading"));
    var username = $.common.trim($("input[name='username']").val());
    var password = $.common.trim($("input[name='password']").val());
    var captcha = $("input[name='captcha']").val();
    $.ajax({
        type: "post",
        url: ctx + "login",
        data: {
            "username": username,
            "password": password,
            "captcha": captcha,
        },
        success: function (result) {
            if (result.status == 200) {
                console.log(result)
                location.href = ctx + 'index';
            } else {
                $.modal.closeLoading();
                $('.imgcode').click();
                $(".code").val("");
                $.modal.msg(result.msg);
            }
        }
    });
}

后台登录接口:

    @PostMapping("/login")
    @ApiOperation(value = "登录入口")
    @ResponseBody
    public SkyResponse login(@Validated @RequestBody LoginDTO loginDTO) {
        // 生成令牌
        String token = loginService.login(loginDTO.getUsername(), loginDTO.getPassword(), loginDTO.getCaptcha());
        return SkyResponse.success("登录成功!", 1)
                .put("token", token);
    }

两种解决方案:

1.去掉后端参数上的 @RequestBody 注解

2.在前端ajax 请求上设置 contentType 为 "application/json"

猜你喜欢

转载自blog.csdn.net/qq_42013035/article/details/107127775