服务器明明已经配置了跨域,但是还是出现跨域问题,是由于浏览器的预检请求(Preflight Request)导致的。预检请求是在实际请求之前发出的OPTIONS请求,用于检查服务器是否允许实际请求。这是跨域请求中常见的行为,用于确保跨域请求的安全性。
在你提供的两个请求中,第一个是OPTIONS请求,用于进行预检,检查服务器是否支持实际请求中包含的请求头和方法。第二个请求是实际的请求,用于获取数据。
所以后端代码需要放行OPTIONS请求,才能正常的请求成功,
示例代码如下:
在过滤器中加上如下代码即可
//解决部署到服务器后前端携带token的跨域问题(因为第一次发送的请求方式是OPTIONS,只有这次放行了,后面的请求才会正常通过)
String method = servletRequest.getMethod();
if("OPTIONS".equals(method)){
chain.doFilter(request, response);
return;
}