CORS跨域问题
原因:JavaScript 在不同域名之间请求数据。 由于 JavaScript 同源策略的限制,处于安全的考虑js 只能获取自己域名下的资源,不能跨域请求资源
原理://会产生跨域请求
//当前系统域名为 http://a.com
//要访问/跳转的域名为 http://b.com
//就会产生跨域请求
//不是浏览器不能解析 也不是请求服务器不接收
//是服务发送到服务器 但是由于是跨域请求 服务器会标识是跨域请求 然后返回结果给服务器
//但是服务器知道这个是跨域请求
//浏览器厂商认为跨域请求/跳转是不安全的 所以不解析 报异常
//不跳转是浏览器行为
解决:cors解决
1:直接设置响应对象response的响应头部属性
/*
//可以设置响应头部属性
//设置允许可以跨域请求的域名
response.setHeader("Access-Control-Allow-Origin", "http://a.com");
//只能添加一个 *为全允许
//设置允许可以读取cookie中的数据
response.setHeader("Access-Control-Allow-Credentials", "true");
*/
2:springmvc处理器方法上添加注解@CrossOrigin(origins = "http://a.com",allowCredentials = "true")
其中@CrossOrigin中的2个参数:
origins : 允许可访问的域列表
maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。
也可以作用在 contraller上 为整个contraller启用