Spring Boot Web应用开发 CORS 跨域请求支持

2025-05-29 0 59

一、Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等

CORS与JSONP相比

1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。

2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。

3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS

浏览器支持情况

  1. Chrome 3+
  2. Firefox 3.5+
  3. Opera 12+
  4. Safari 4+
  5. Internet Explorer 8+

二、在spring MVC 中可以配置全局的规则,也可以使用@CrossOrigin注解进行细粒度的配置。

全局配置:

?

1

2

3

4

5

6

7

8

9

10

11

12

13
@Configuration

public class CustomCorsConfiguration {

@Bean

public WebMvcConfigurer corsConfigurer() {

return new WebMvcConfigurerAdapter() {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");

}

};

}

}

或者是

?

1

2

3

4

5

6

7

8

9

10

11

12

13
/**

* 全局设置

*

* @author wujing

*/

@Configuration

public class CustomCorsConfiguration2 extends WebMvcConfigurerAdapter {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");

}

}

定义方法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15
/**

* @author wujing

*/

@RestController

@RequestMapping("/api")

public class ApiController {

@RequestMapping(value = "/get")

public HashMap<String, Object> get(@RequestParam String name) {

HashMap<String, Object> map = new HashMap<String, Object>();

map.put("title", "hello world");

map.put("name", name);

return map;

}

}

测试js:

?

1

2

3

4

5

6

7

8

9

10

11
$.ajax({

url: "http://localhost:8081/api/get",

type: "POST",

data: {

name: "测试"

},

success: function(data, status, xhr) {

console.log(data);

alert(data.name);

}

});

细粒度配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
/**

* @author wujing

*/

@RestController

@RequestMapping(value = "/api", method = RequestMethod.POST)

public class ApiController {

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

@RequestMapping(value = "/get")

public HashMap<String, Object> get(@RequestParam String name) {

HashMap<String, Object> map = new HashMap<String, Object>();

map.put("title", "hello world");

map.put("name", name);

return map;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://blog.csdn.net/jerome_s/article/details/54731042

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring Boot Web应用开发 CORS 跨域请求支持 https://www.kuaiidc.com/116251.html

相关文章

发表评论
暂无评论