跨域
浏览器因为安全考虑,所以设置了同源策略;同源策略简单理解就是DNS域名,端口号,协议完全相同就称为同源;同源下的页面之间才能进行js的dom操作,如果不在同一个源下任何跨文档dom访问都是被阻止的;不同源下的访问可以称之为跨域访问;当在实际应用中,多数出现在ajax请求时,在不同域下请求数据会遇到禁止跨域的访问;
为什么要有同源策略
如何解决跨域
解决跨域主要考虑两方面
一个是避开Ajax请求方式一个是解决同源限制的问题解决跨域的方式有多种
基于javaScript标签src方式基于Jquery的JSONP方式基于CORS的方式(解决同源的问题)JSONP和CORS的区别
JSONP只能解决GET方式提交CORS不仅支持GET方式,同时也支持POST提交方式
CORS
cors是一个w3c标准,是跨域资源共享它允许浏览器向跨域服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制cors需要浏览器和服务器同时支持cors原理
客户端自动向请求头header中注入origin服务器端需要向响应头header中注入Access-Allow-origin浏览器检测到header中到Access-Control-Allow-Origin,则就可以跨域操作了
客户端跨域处理
浏览器将cors请求分成两类:
简单请求非简单请求简单请求
区分简单请求和非简单请求
CORS实现方式
某个方法可以跨域访问,在某个方法上使用@CrossOrigin某个Controller类都可以跨域访问,在类上使用@CrossOrigin全局访问,在springmvc.xml中配置
<!--跨域-->
<mvc:cors>
<mvc:mapping path="/**"/>
</mvc:cors>