SpringBoot 跨域 Access-Control-Allow-Origin
SpringBoot跨域 access Control Origin Allow
2023-09-14 09:00:01 时间
跨域(CORS)是指不同域名之间相互访问。
跨域,指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略所造成的,是浏览器对于JavaScript所定义的安全限制策略。
只要协议,子域名,主域名,端口号有一项不同,就属于跨域
跨域的解决方法
前端:
使用jsonp
后端:
实现WebMvcConfigurer接口
在需要跨域访问的类和方法中设置允许跨域访问(注解)
服务端设置Response Header(Fiter)
(1)实现WebMvcConfigurer接口
通过实现WebMvcConfigurer
接口中的addCorsMappings()
方法来实现跨域
@Configuration public class WebMvcConfig implements WebMvcConfigurer{ //解决跨域问题 @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT") .maxAge(3600); } }
(2)注解
使用@CrossOrigin注解声明类和方法允许跨域访问
该注解可以实现方法级别的细粒度的跨域控制。可以在类或者方添加该注解。
如果在类上添加该注解,该类下的所有接口都可以通过跨域访问;
如果在方法上添加注解,那么只限于加注解的方法可以访问。
@CrossOrigin @RestController @RequestMapping("/api/ppt") public class PPTOperation { @PostMapping("/combine") public Result combine(@RequestBody JSONObject jsonParam) { …… } }
(3)实现Fiter接口
通过实现Fiter接口在请求中添加一些Header来解决跨域的问题
@Component public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) response; res.addHeader("Access-Control-Allow-Credentials", "true"); res.addHeader("Access-Control-Allow-Origin", "*"); res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN"); if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) { response.getWriter().println("ok"); return; } chain.doFilter(request, response); } @Override public void destroy() { } @Override public void init(FilterConfig filterConfig) throws ServletException { } }
相关文章
- Java项目毕业设计:基于springboot+vue的电影视频网站系统「建议收藏」
- springboot启动原理总结_Springboot启动流程
- SpringBoot 官方推荐,连接池,太快了!
- 七、springboot整合flowable(工作流)
- springBoot跨域注解@CrossOrigin
- SpringBoot 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value.
- SpringBoot跨域配置「建议收藏」
- SpringBoot整合thymeleaf
- SpringBoot项目中解决跨域的5种方式
- 如何在SpringBoot应用中实现跨域访问资源和消息通信?
- springboot更改项目名_java 文件重命名
- SpringBoot集成Swagger学习总结
- springBoot整合Mybatis-Plus需要的依赖_springboot中文手册
- MQ回退消息 springboot
- SpringBoot整合Thymeleaf
- SpringBoot自动装配原理分析,手写starter组件
- Mybatis-Plus入门案例(springboot项目实现)
- 2-2. SpringBoot API开发详解 --SpringMVC注解+封装结果+支持跨域+打包
- SpringBoot和Vue前后分离解决axios跨域问题详解程序员
- SpringBoot(一)走进Springboot的世界详解编程语言
- springboot aop来实现读写分离和事物配置详解编程语言
- Springboot文件上传出现找不到指定系统路径详解编程语言