web开发经常会遇到跨域开发问题,解决方案有jsonp,iframe,CORS等等
- JSONP只支持get请求,CORS支持所有的http请求类型
- 使用CORS,开发者可以使用普通的XMLHttpRequest请求和获取数据,比起JSONP有更好的错误处理
- JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大对数的现代浏览器都支持了CORS
- 支持的浏览器有:Chrome3+,Firefox3.5+,Opera12+,Safari4+,IE8+
在SpringMvc中可以进行全局的配置也可以使用@CrossOrigin进行细粒度的配置
@Configuration
public class CustomCorsConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
}
};
}
}
@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;
}