Spring Boot Web应用开发 CORS 跨域请求支持
2017-05-27 08:49
816 查看
一、Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等
CORS与JSONP相比
1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。
2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。
3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS
浏览器支持情况
- Chrome 3+
- Firefox 3.5+
- Opera 12+
- Safari 4+
- Internet Explorer 8+
二、在spring MVC 中可以配置全局的规则,也可以使用@CrossOrigin注解进行细粒度的配置。
全局配置:
@Configuration public class CustomCorsConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**").allowedOrigins("http://localhost:8080"); } }; } }
或者是
/** * 全局设置 * * @author wujing */ @Configuration public 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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Spring Boot Web应用开发 CORS 跨域请求支持
- Spring 支持 CORS 请求踩的坑
- Spring Boot全局支持CORS(跨源请求)的配置方法
- Spring3使用CORS解决跨域请求的配置
- spring boot cors 允许跨域请求
- spring mvc+Ajax跨域请求-CORS方式
- 跨域请求方式集锦--CORS跨域请求支持各种请求方式
- Spring Boot全局支持CORS(跨源请求)的配置方法
- Spring Boot支持JSONP跨域请求数据(Ajax的jsonp)
- Spring Boot基础教程11-web应用开发-CORS支持
- springBoot的CORS支持跨域
- 【spring boot】2.0增加跨域请求支持 全局配置 以及局部配置
- Spring MVC 4.2 增加 CORS 支持 (跨域请求)
- SpringBoot多跨域请求的支持(JSONP)
- 详解SpringBoot多跨域请求的支持(JSONP)
- 【spring boot】SpringBoot初学(9.1)– 简单配置corsFilter对跨域请求支持
- Spring boot 和Vue开发中CORS跨域问题解决
- springboot2-CORS支持(跨域)
- fetch跨域请求 + spring mv 跨域支持
- 支持POST的跨域请求CORS