spring中解决CROS跨域请求的方案

来源:互联网 发布:java用什么软件编写 编辑:程序博客网 时间:2024/06/06 10:05

感觉spring真是个强大的框架,解决这种棘手的问题很简单,参考官方文档:

Controller method CORS configuration

You can add to your @RequestMapping annotated handler method a @CrossOriginannotation in order to enable CORS on it (by default @CrossOrigin allows all origins and the HTTP methods specified in the @RequestMapping annotation):

@RestController@RequestMapping("/account")public class AccountController {@CrossOrigin@GetMapping("/{id}")public Account retrieve(@PathVariable Long id) {// ...}@DeleteMapping("/{id}")public void remove(@PathVariable Long id) {// ...}}

It is also possible to enable CORS for the whole controller:

@CrossOrigin(origins = "http://domain2.com", maxAge = 3600)@RestController@RequestMapping("/account")public class AccountController {@GetMapping("/{id}")public Account retrieve(@PathVariable Long id) {// ...}@DeleteMapping("/{id}")public void remove(@PathVariable Long id) {// ...}}

In this example CORS support is enabled for both retrieve() and remove() handler methods, and you can also see how you can customize the CORS configuration using @CrossOrigin attributes.

You can even use both controller and method level CORS configurations, Spring will then combine both annotation attributes to create a merged CORS configuration.

@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) {// ...}}

原创粉丝点击