首页 > 开发 > Java > 正文

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

2024-07-13 10:08:13
字体:
来源:转载
供稿:网友

一、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注解进行细粒度的配置。 

全局配置:

@Configurationpublic class CustomCorsConfiguration {  @Bean public WebMvcConfigurer corsConfigurer() {  return new WebMvcConfigurerAdapter() {     @Override     public void addCorsMappings(CorsRegistry registry) {       registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");     }  }; }}

或者是

/** * 全局设置 * * @author wujing */@Configurationpublic class CustomCorsConfiguration2 extends WebMvcConfigurerAdapter {  @Override public void addCorsMappings(CorsRegistry registry) {  registry.addMapping("/api/**").allowedOrigins("http://localhost:8080"); }}

定义方法:

/** * @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:

$.ajax({          url: "http://localhost:8081/api/get",        type: "POST",        data: {          name: "测试"        },        success: function(data, status, xhr) {          console.log(data);          alert(data.name);        }       });

细粒度配置

 /** * @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; }}

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表