springboot跨域配置

本文围绕Spring Boot配置CORS展开,先介绍跨域、源、同源的概念,指出跨域实质是受浏览器同源策略影响。说明不受同源策略影响的情况,列举降域、jsonp跨域、cors跨域等跨域方法,重点讲解springboot配置cors跨域的多种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot 配置 CORS

以下来自:https://www.cnblogs.com/yuansc/p/9076604.html

1.跨域?

当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域HTTP请求(Cross-site HTTP request)。

2.源?

源[origin]就是协议、域名和端口号。例如:http://www.baidu.com:80这个URL。

3.同源?

若地址里面的协议、域名和端口号均相同则属于同源。

4.跨域实质上

就是受前面所讲的浏览器同源策略的影响,不是同源的脚本不能操作其他源下面的对象。想要操作另一个源下的对象就需要跨域。 在同源策略的限制下,非同源的网站之间不能发送 AJAX 请求。

5不受同源策略影响

1.页面中的链接,重定向以及表单提交是不会受到同源策略限制的;
2.跨域资源的引入是可以的。但是JS不能读写加载的内容。如嵌入到页面中的“<script src="..."></script>,<img>,<link>,<iframe>”等。.

6.如何跨域?

1.降域
2.jsonp跨域
2.cors跨域

7.springboot配置cors跨域

**对某一接口配置,可以在方法上添加 @CrossOrigin 注解 **

@CrossOrigin(origins = {"http://localhost:9000", "null"})
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String greetings() {
    return "{\"project\":\"just a test\"}";
}

对一系列接口配置,在类上加注解,对此类的所有接口有效

@CrossOrigin(origins = {"http://localhost:9000", "null"})
@RestController
@SpringBootApplication
public class SpringBootCorsTestApplication {
    
}

如果想添加全局配置,则需要添加一个配置类

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

还可以通过添加 Filter 的方式,配置 CORS 规则,并手动指定对哪些接口有效

@Bean
public FilterRegistrationBean corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);   config.addAllowedOrigin("http://localhost:9000");
    config.addAllowedOrigin("null");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");
    source.registerCorsConfiguration("/**", config); // CORS 配置对所有接口都有效
    FilterRegistrationBean bean = newFilterRegistrationBean(new CorsFilter(source));
    bean.setOrder(0);
    return bean;
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值