SpringMVC注解@CrossOrigin跨域问题详解
作者:牧码ya
这篇文章主要介绍了SpringMVC注解@CrossOrigin跨域问题详解,跨域是浏览同源策略的造成,是浏览器对JavaScript施加的安全限制CORS是一种可以解决跨域问题的技术,需要的朋友可以参考下
前言
一般的,只要网站的【协议名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跨域问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!