springboot允许跨域注解_SpringBoot 中解决跨域请求

CORS 理解

同源策略是web浏览器实现的一个重要的安全概念,它防止JavaScript代码对不同的来源(例如,不同的域)发出请求,而不是它所服务的来源。虽然同源策略有效地防止来自不同来源的资源,但它还阻止服务器和已知和可信来源的客户端之间的合法交互

跨源资源共享( CORS )是一种放松同源策略的技术,允许web页面上的JavaScript使用来自不同来源的restAPI。

那么我们如何实现,让前端可以很方便的来通过我们的接口获取到数据。

启用 CORS

例如我们有下边这样的一个控制器

@RestController

public class GreetingController {

private static final String template = "Hello, %s!";

private final AtomicLong counter = new AtomicLong();

@GetMapping("/greeting")

public Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {

System.out.println("==== in greeting ====");

return new Greeting(counter.incrementAndGet(), String.format(template, name));

}

}

我们在前端通过 JQuery 来请求这个接口的资源的话,会发生错误。

这就是一个很普通的同源策略的问题,也就是所说的跨域请求。

我们可以通过 @CrossOrigin 这个注解来解决。

@CrossOrigin(origins = "http://localhost:9000")

@GetMapping("/greeting")

public Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {

System.out.println("==== in greeting ====");

return new Greeting(counter.incrementAndGet(), String.format(template, name));

}@CrossOrigin 注解只允许对特定的方法进行跨域请求,默认情况下,它允许所有 origins,,所有 headers 。当然你可以设置更多的内容,origins, methods, allowedHeaders, exposedHeaders, allowCredentials or maxAge。在这里呢,我们只允许我们只允许http://localhost :9000发送跨源请求。

还可以在控制器类级别添加此注释

全局 CORS 配置

src/main/java/hello/Application.java

@Bean

public WebMvcConfigurer corsConfigurer(){

return new WebMvcConfigurerAdapter() {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry

.addMapping("/*")

.allowedOrigins("*");

}

};

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值