记录今日份的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"