浅谈spring-boot 允许接口跨域并实现拦截(CORS)
发布时间 - 2026-01-11 02:51:49 点击率:次本文介绍了spring-boot 允许接口跨域并实现拦截(CORS),分享给大家,也给自己留个笔记

pom.xml(依赖的jar)
// 在spring-boot-starter-web的启动器中,已经依赖好了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
CORS跨域的配置(主要配置允许什么样的方法跨域)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Msater Zg on 2017/4/3.
*/
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT")
.maxAge(3600);
}
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
List<String> list = new ArrayList<>();
list.add("*");
corsConfiguration.setAllowedOrigins(list);
/*
// 请求常用的三种配置,*代表允许所有,当时你也可以自定义属性(比如header只能带什么,只能是post方式等等)
*/
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}
拦截器配置(可以根据不同路径,配置不同的拦截器)
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by Msater Zg on 2017/4/5.
* 拦截器
*/
public class ApiInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 请求前调用
System.out.println("拦截了");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 请求过程中调用
System.out.println("拦截了");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 请求完成时调用
System.out.println("拦截了");
}
}
拦截器管理类,用于生成项目的拦截器链
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* Created by Msater Zg on 2017/4/5.
* 拦截器管理工具
*/
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
registry.addInterceptor(new ApiInterceptor()).addPathPatterns("/user/**"); //对来自/user/** 这个链接来的请求进行拦截
super.addInterceptors(registry);
}
}
结语
实现跨域的方式有很多,这只是其中一种。有什么不对的地方希望能及时指出。谢谢!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# boot
# cors跨域拦截
# springboot
# 跨域
# 接口跨域
# Apache中配置支持CORS(跨域资源共享)实例
# JS跨域解决方案之使用CORS实现跨域
# js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
# Node.js设置CORS跨域请求中多域名白名单的方法
# vue+springboot实现项目的CORS跨域请求
# 浅谈Koa2框架利用CORS完成跨域ajax请求
# 跨域解决之JSONP和CORS的详细介绍
# C# WebApi CORS跨域问题解决方案
# react中fetch之cors跨域请求的实现方法
# 跨域(CORS)问题的解决方案分享
# 拦截器
# 有什么
# 好了
# 多个
# 有很多
# 希望能
# 给大家
# 三种
# 这只
# 自定义
# 能带
# 可以根据
# 也给
# 你也可以
# 大家多多
# 留个
# 管理类
# 过程中
# 器中
# util
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何实现本地化和多语言支持?(i18n教程)
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
简历在线制作网站免费版,如何创建个人简历?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
如何快速上传建站程序避免常见错误?
再谈Python中的字符串与字符编码(推荐)
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
利用python获取某年中每个月的第一天和最后一天
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
原生JS实现图片轮播切换效果
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何获取免费开源的自助建站系统源码?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
焦点电影公司作品,电影焦点结局是什么?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
Laravel Docker环境搭建教程_Laravel Sail使用指南
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
香港服务器租用费用高吗?如何避免常见误区?
WordPress 子目录安装中正确处理脚本路径的完整指南
如何有效防御Web建站篡改攻击?
详解Huffman编码算法之Java实现
Android滚轮选择时间控件使用详解
Laravel如何升级到最新版本?(升级指南和步骤)
php json中文编码为null的解决办法
在线教育网站制作平台,山西立德教育官网?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
微信小程序 配置文件详细介绍
Bootstrap整体框架之JavaScript插件架构
北京网站制作公司哪家好一点,北京租房网站有哪些?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何登录建站主机?访问步骤全解析
长沙做网站要多少钱,长沙国安网络怎么样?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Laravel如何使用查询构建器?(Query Builder高级用法)
Android利用动画实现背景逐渐变暗
如何撰写建站申请书?关键要点有哪些?
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel如何记录自定义日志?(Log频道配置)
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
如何快速搭建二级域名独立网站?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】

