1.最近在做一个项目,需求是当用户没有登录时,不允许访问api,具体的操作是在spring filter里面判断header的正确性(用的jwt),前端用的axios发的get请求,发现前端已经设置header了,但是发现浏览器的network里有时设置了header,有时没有,相应的后台filter里面有时能接收到header,有时接收不到(要知道敲代码遇到这种不确定性是很方的,因为根本不好找错),来来回回折腾了好久也没找到问题所在,后来发现是由于浏览器要先发一个options请求(这个是没带我设置的那个header的),然后再发get请求,而我在spring 的filter里面直接是获取header,因为第一个请求(method为options)是没有带header的,我获取不到,便直接是拒绝访问(在filter里面return false了),然后就不不会进行下一步发送get请求了,但为什么有时候又不会发options请求呢(也就是能成功的获取到header,)这就要看options请求的具体定义了http://m.blog.csdn.net/article/details?id=7402272,具体做法是在filter里面判断当前的request method,如果为options,则设置response的status为200,让他继续发get请求,然后就可以成功设置header了!
2、spring boot在用post方法时,直接接收前端传过来的对象时(requestBody),前端一定要在params对象里面一个一个将属性以key:value的形式列出来,后台才能接收到,不然后台接收到的对象,里面的属性全部为null。
网友评论