前端请求头
后台校验
结果是 request = null;
原因是因为,在发起跨域请求时,会发送事先发送一个OPTIONS请求,可以在浏览器的NETWORK中看到发起了两个名字一样的请求。
第一个请求,可以看到,是携带token的,并且是一个post请求,和我们写的post方法是一致的。
第二个请求,则是一个option请求,并且请求头中,不携带token,所以,在发起该请求时,就会出现,拦截该请求。
OPTIONS请求,是一个嗅探请求,主要 用于获取服务器支持的请求方法,用来检查服务器的性能。
那么,只要在拦截器中放行该类的请求,就可以正常的获取到TOKEN了。代码如下。
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判断请求方式,排除OPTIONS请求
if(request.getMethod().toUpperCase().equals("OPTIONS")){
return true;//通过所有OPTION请求
}
}