后端解决跨域(Cross-Origin Resource Sharing)(三种方式)

注解@CrossOrigin

控制层的类上或者方法上加注解@CrossOrigin

实现接口并重写方法

复制代码
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 设置允许跨域的路径
        registry.addMapping("/**")
                // 设置允许跨域请求的域名
            	// 这里写的*表示允许所有域,实际情况可能有以下几种形式
            	// .allowedOrigins("http://app.example.com:80"); 写全了,个人认为最正规的写法,但是更喜欢用下面这种
            	// .allowedOrigins("http://app.example.com"); 只写了协议和域名,端口使用http默认的80,https的话是443,应该是最常用的写法(因为一般都使用默认的端口)
            	// .allowedOrigins("http://123.123.123.123:8888"); 前端服务器没有域名的情况下,也可以使用ip地址
                .allowedOriginPatterns("*")
                // 是否允许cookie
                .allowCredentials(true)
                // 设置允许的请求方式
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                // 设置允许的header属性
                .allowedHeaders("*")
                // 跨域允许时间,用于设置预检请求(OPTIONS方法)的缓存时间(单位秒)。设置为 3600(即1小时)表示浏览器可以缓存这个CORS响应信息1小时,期间对同一源的跨域请求不再发送预检请求,直接使用缓存结果,从而提高性能。
                .maxAge(3600);
    }
}

原文链接:https://blog.csdn.net/Old_Secretary/article/details/137740154

添加过滤器来实现跨域

复制代码
@Configuration
public class CORSFilter {
    @Bean
    public CorsFilter corsFilter(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");//允许所有请求头("*")
        corsConfiguration.addAllowedOrigin("*");//允许所有来源("*")
        corsConfiguration.addAllowedMethod("*");//允许所有HTTP方法("*")
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfiguration);//将配置应用于所有URL("/**"),这意味着所有请求都将应用这个CORS配置
        return new CorsFilter(source);//这个过滤器将注册的CORS配置应用于所有请求,使得所有请求都能通过跨域资源共享
    }
}
相关推荐
小刘|9 分钟前
SpringAIAlibaba快速接入阿里云百炼
java·spring boot·spring·maven
Han.miracle14 分钟前
Jackson 工具类详解:ObjectMapper 配置、泛型擦除、TypeReference 与 JavaType
java·spring boot·spring
码不停蹄的玄黓39 分钟前
SpringBoot 实现拦截器
java·spring boot·后端
callJJ1 小时前
Java 线程池使用指南:基于 Spring Boot 3.x + JDK 17 的入门与实践
java·开发语言·spring boot·线程池·多线程编程
我登哥MVP1 小时前
SpringCloud 核心组件解析:服务调用和负载均衡
java·spring boot·后端·spring·spring cloud·java-ee·负载均衡
西凉的悲伤1 小时前
Spring Boot 中 RedisTemplate 与 StringRedisTemplate 常用 Redis API 速查
spring boot·redis·后端·redistemplate·stringredis
霸道流氓气质1 小时前
Spring Boot 微服务中“调用第三方接口 → 数据加工 → 分接口返回“的完整架构实践
spring boot·微服务·架构
阿萨德528号1 小时前
[特殊字符] CI/CD 流水线搭建实战指南:Spring Boot + GitHub Actions → 服务器自动部署
spring boot·ci/cd·github
CodeStats2 小时前
JavaWeb 造轮者视角:Spring Boot 启动核心思想与完整链路解析
java·spring boot·后端
Sam_Deep_Thinking15 小时前
Spring Boot 的启动原理是什么?
java·spring boot·后端