问题:在前后端分离项目的时候经常出现如下错误:has been blocked by CORS policy: Response to preflight request doesn‘t pass access control check。
打开浏览器的Console:
分析:在前后端分离项目的时候,我们总会面临一个跨域问题:CORS跨域时,会出现一次动作,两次请求。
打开浏览器的Network,点击了一次登录,出现了两次账号登录的后台接口调用方法,下图验证了CORS跨域问题。前台在登录的时候,调用了两次账号登录的后台接口,一次调用成功,一次调用失败。
前后端分离中的跨域问题,包括两种情况一种是简单请求一种是复杂请求,此问题是属于复杂请求,因为后端拦截器缺少了第一次请求的预简请求判断,后端拦截器只有对第二次请求的判断,所以才会报这个错。
解决:在后台拦截器添加对第一次预简请求判断的代码
//处理预请求
if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
return true;
}