SpringMVC注解@CrossOrigin跨域问题详解
前言
一般的,只要网站的【协议名protocol】、【主机host】、【端口号port】这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用 跨域:浏览同源策略的造成,是浏览器对JavaScript施加的安全限制 CORS是一种可以解决跨域问题的技术
SprinMVC通过@CrossOrigin注解解决跨域
在Spring MVC4.2之后推出了@CrossOrigin注解来解决跨域问题,而在4.2之前我们都是通过定义注册过滤器的方式来解决跨域问题的
@CrossOrigin的参数
1、origins:允许可访问的域列表;*表示可以是任何来源
2、maxAge:准备响应前的缓存持续的最大时间(单位:秒)
@CrossOrigin使用在Controller层
1、类上,此类中所有方法启用跨域支持
// 开启跨域支持 @CrossOrigin @RestController @RequestMapping("/user") public class UserController { }
2、方法上,仅此方法启用跨域支持
// 开启跨域支持 @CrossOrigin @RequestMapping(value = "/findAll", method = RequestMethod.GET) public List<User> findAll(){ return userService.findAll(); }
注意
1、注解失效问题:此时Controlle的方法上@RequestMapping注解中需要声明请求方式即增加method=RequestMethod.XXX
2、添加注解后session失效问题:此时对的ajax请求中需要添加xhrFields:{withCredentials:true}(每个ajax中都需要加此属性,以保证session一致)
$.ajax({ type: "post", url: '/user/login', xhrFields: {withCredentials: true}, data: { username: username, password: password }, success: function (msg) { console.log('登录成功'); }, error: function (msg) { console.log('请求报错!'); } })
到此这篇关于SpringMVC注解@CrossOrigin跨域问题详解的文章就介绍到这了,更多相关@CrossOrigin跨域问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java HashSet(散列集),HashMap(散列映射)的简单介绍
这篇文章主要介绍了Java HashSet(散列集),HashMap(散列映射)的简单介绍,帮助大家更好的理解和学习Java集合框架的相关知识,感兴趣的朋友可以了解下2021-01-01继承WebMvcConfigurationSupport后自动配置不生效及如何配置拦截器
这篇文章主要介绍了继承WebMvcConfigurationSupport后自动配置不生效及如何配置拦截器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11
最新评论