SpringMVC注解@CrossOrigin解决跨域问题
一般的,只要网站的【协议名protocol】、【主机host】、【端口号port】这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用
跨域:浏览同源策略的造成,是浏览器对JavaScript施加的安全限制
CORS是一种可以解决跨域问题的技术
SprinMVC通过@CrossOrigin注解解决跨域
在Spring MVC
4.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('请求报错!');
}
})

浙公网安备 33010602011771号