Skip to content
DAILY QUOTE

“ ”

跨域拦截器

具体:CorsFilter / @CrossOrigin

职责: 处理浏览器的 **CORS协议。它负责在 HTTP 响应头里盖上 Access-Control-Allow-Origin 等印章,告诉浏览器:“这个来源是安全的,允许读取数据。

执行时机: 处于请求链路的最前端。它甚至在请求还没到达你写的 Controller 之前,就先处理浏览器的 OPTIONS 预检请求

判断依据:仅仅通过请求头中的 Origin 字段进行字符串比对,不涉及任何业务逻辑。

在使用完nginx反向代理后,由于前后端实现了同源,跨域拦截器就完成了自己的使命,不需要了。

业务拦截器

具体:HandlerInterceptor 职责:负责执行具体的 业务安全策略,如

  1. 检查 Header 里是否带有合法的 Token
  2. 判断当前用户是否有权访问特定接口
  3. 记录用户操作轨迹

执行时机:位于 Spring MVC 内部。只有当请求通过了跨域校验、路由匹配成功后,才会进入 Interceptor。

技术特性:可以通过HandlerMethod获取到目标方法上的自定义注解,从而实现灵活的拦截逻辑

与AOP区别:拦截器是全局的、粗粒度控制,而AOP是细粒度,针对特定方法的逻辑增强

总结

请求进入服务器,按以下顺序进行

阶段拦截组件关注内容失败后果
第一关:安全协议CORS 拦截请求头 Origin 是否在白名单?浏览器报错,前端拿不到数据
第二关:业务身份业务拦截器是否登录?是否有 Token?返回 401 Unauthorized
第三关:精细控制AOP 切面IP 频率是否超限?(限流)返回 429 Too Many Requests