400
400错误是因为
前端提交的到后台的数据应该是json字符串类型
而前端没有将对象转化为字符串类型;
400解决方法:
<head>
<script type="text/javascript">
function regist(){
$.ajax({
url:"/",
<!--使用JSON.stringify(param)来转换json -->
data:JSON.stringify({ username: $("#username").val(),
password: $("#password").val(),
})
dataType:"json",
type:"POST",
})
}
</script>
</head>
403
Cross—Site Request Forgery(跨站点请求伪造)
在springsecurity4.0之后 默认开启CSRF防护
Spring Security CSRF会针对PATCH,POST,PUT和DELETE方法进行防护。
在启用@EnableWebSecurity 之后 CSRF防护便会自动开启
这时候 没有token的post请求就会被拦截
415
415是因为传入数据contentType有误
需要在Ajax中加入contentType:"application/json,
415 403解决方法:
<head>
<!--CSRF令牌-->
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
<script type="text/javascript">
function regist(){
var csrfToken = $("meta[name='_csrf']").attr("content");
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
$.ajax({
url:"",
data:"",
dataType:"json",
type:"POST",
<!--错误415:加上这一行contentType表单中默认是application/x-www-form-urlencoded-->
contentType:"application/json;charset=utf-8",
beforeSend: function(request) {
request.setRequestHeader(csrfHeader, csrfToken); // 添加 CSRF Token
},
})
}
</script>
</head>