最后
我当时的操作是有一个token, 要验证这个token之后才能查询所有用户的登陆log。以前是能运行的, 但是后来我把验证token的操作加入了我的拦截器中, 就爆出了如上错误。
这里我先放一下之前的代码
String token = request.getHeader(“token”);
// 所有请求第一个进入的方法
String reqURL = request.getRequestURL().toString();
// String ip = request.getRemoteHost();
if (handler instanceof HandlerMethod) {
HandlerMethod h = (HandlerMethod) handler;
String sb =
// Controller 的包名
"Controller : " + h.getBean().getClass().getName() + “\n” +
// 方法名称
"Method : " + h.getMethod().getName() + “\n” +
// 请求方式 post\put\get 等等
"RequestMethod : " + request.getMethod() + “\n” +
// 部分请求链接
"URI : " + request.getRequestURI() + “\n” +
// 完整的请求链接
"AllURI : " + reqURL + “\n” +
“-----------------------” + new Date() +
“-------------------------------------\n”;
logger.info(sb);
}
if (null != token) {
return JwtUtil.verity(token);
}
return false;
}
在这之后我就疯狂百度, 查询为什么加了拦截器之后会出现跨域的安全问题。
后来 我看了(https://blog.csdn.net/achang07/article/details/79380990)这篇文章后有了一点点理解。 是OPTION的坑
在发出复杂请求的之前,就会出现一次OPTIONS请求。
OPTIONS请求可以被称作一次嗅探请求,通过这个方法,客户端可以在采取具体的资源请求之前,决定对资源采取何种必要措施。
由于我的问题出现在请求内容为json的时候,所以是复杂请求,提前进行了一次OPTIONS请求。
这个OPTIONS请求中没有增加请求头, 所以无法通过, 被拦截下来了
最后
ActiveMQ消息中间件面试专题
- 什么是ActiveMQ?
- ActiveMQ服务器宕机怎么办?
- 丢消息怎么办?
- 持久化消息非常慢怎么办?
- 消息的不均匀消费怎么办?
- 死信队列怎么办?
- ActiveMQ中的消息重发时间间隔和重发次数吗?
ActiveMQ消息中间件面试专题解析拓展:
redis面试专题及答案
- 支持一致性哈希的客户端有哪些?
- Redis与其他key-value存储有什么不同?
- Redis的内存占用情况怎么样?
- 都有哪些办法可以降低Redis的内存使用情况呢?
- 查看Redis使用情况及状态信息用什么命令?
- Redis的内存用完了会发生什么?
- Redis是单线程的,如何提高多核CPU的利用率?
Spring面试专题及答案
- 谈谈你对 Spring 的理解
- Spring 有哪些优点?
- Spring 中的设计模式
- 怎样开启注解装配以及常用注解
- 简单介绍下 Spring bean 的生命周期
Spring面试答案解析拓展
高并发多线程面试专题
- 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?
- Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。
- Java 中 wait 和 sleep 方法有什么区别?
- 如何在 Java 中实现一个阻塞队列?
- 如何在 Java 中编写代码解决生产者消费者问题?
- 写一段死锁代码。你在 Java 中如何解决死锁?
高并发多线程面试解析与拓展
jvm面试专题与解析
- JVM 由哪些部分组成?
- JVM 内存划分?
- Java 的内存模型?
- 引用的分类?
- GC什么时候开始?
JVM面试专题解析与拓展!