spring boot与Nginx支持CORS

spring boot与Nginx支持CORS

让spring boot支持CORS非常简单,不用做任何配置,只需要在controller里使用@CrossOrigin注解即可。

@CrossOrigin注解可以使用在类或者方法上,其参数主要有origins和maxAge,用来指定允许跨域的域默认是*,和OPTIONS响应的有效时间,默认是1800。当类和方法都使用@CrossOrigin注解时,会自动合并两个注解的参数。

例如官方文档的一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@CrossOrigin(maxAge = 3600)
@RestController
@RequestMapping("/account")
public class AccountController {

@CrossOrigin(origins = "http://domain2.com")
@GetMapping("/{id}")
public Account retrieve(@PathVariable Long id) {
// ...
}

@DeleteMapping("/{id}")
public void remove(@PathVariable Long id) {
// ...
}
}

如果有使用Spring Security的话,在Spring Security的配置类里给配置加上一下代码即可:

1
2
3
4
5
6
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors().and()
...
}

Nginx的方案先挖个坑,网上有很多例子,但是没空亲试,以后再补

参考文献:

CORS support in Spring Framework

https://docs.spring.io/spring-security/site/docs/current/reference/html/cors.html


spring boot与Nginx支持CORS
https://cellargalaxy.github.io/posts/框架/9.spring boot与Nginx支持CORS/
作者
cellargalaxy
发布于
2018年8月2日
许可协议