使用Spring CROS解决项目中的跨域问题详解

这篇文章主要介绍了使用Spring CROS解决项目中的跨域问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

CROS(Cross-Origin Resource Sharing) 用于解决浏览器中跨域请求的问题。简单的Get请求可以使用JSONP来解决,而对于其它复杂的请求则需要后端应用的支持CROS。Spring在4.2版本之后提供了@CrossOrigin 注解来实现对Cross的支持

在Controller方法上配置

@CrossOrigin(origins = {"http://loaclhost:8088"}) @RequestMapping(value = "/crosstest",method = RequestMethod.GET) public String greeting() { return "coRSS test"; }

在Controller上配置,那么这个Controller中的所有方法都会支持CORS

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @CrossOrigin(origins = "http://localhost:8088",maxAge = 3600) @Controller @RequestMapping("/api") public class AppController { @RequestMapping(value = "/crosstest",method = RequestMethod.GET) public String greeting() { return "coRSS test"; } }

Java Config全局配置

import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @EnableWebMvc public class SpringWebConfig extends WebMvcConfigurerAdapter { /** * {@inheritDoc} * This implementation is empty. * * @param registry */ @Override public void addCorsMappings(CorsRegistry registry) { super.addCorsMappings(registry); // 对所有的URL配置 registry.addMapping("/**"); // 针对某些URL配置 registry.addMapping("/api/**").allowedOrigins("http:///localhost:8088") .allowedMethods("PUT","DELETE") .allowedHeaders("header1","header2","header3") .exposedHeaders("header1","header2") .allowCredentials(false).maxAge(3600); } }

XML全局配置

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...