【转:http://www.cnblogs.com/mafly/p/cors.html】
什么是 CORS ?
跨来源资源共享(Cross-origin resource sharing)是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。用 CORS 可以让网页设计师用一般的 XMLHttpRequest,这种方式的错误处理比 JSONP 要来的好。
以上内容摘自维基百科
用人话来解释就是:JavaScript 或 Cookies 不允许访问不同域名下面的内容,当我们想在两个不同域名之前相互通信的话,我们就要考虑跨域这个问题,这也是在通往一个优秀的前端的路上必不可少的过程,如果你只会有 JSONP 的话,那真是令人伤感的,因为 JSONP 是不支持 POST
请求的,所以,在科技发展的今天突然出现了 CORS 这项技术,好像就不需要前端什么事情了,我们可以帮他搞定跨域这个头疼的问题。其实是很简单的一项技术。
怎么使用呢?
据我所知道的是有三种方式:Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2+。
设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包,配置一下web.xml
就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可以看看。
拦截器设置响应头 这种方式原理就是利用拦截器在方法执行前,我们增加请求的响应头,用来支持跨域请求。这种方案是可行的,大部分都是采用这种方案。我当时也是打算采用这种方案,直到我发现原来 Spring 框架已经支持了 CORS 之后,就果断采用了 Spring 框架的内置的方案,其实原理也是一样的。
直接配置即可:
<!-- API 接口跨域配置 -->
<mvc:cors>
<mvc:mapping path="/api/**"
allowed-origins="*"
allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
allow-credentials="true" />
</mvc:cors>
当然你也可以在Controller上使用 @CrossOrigin
注解。类似于这样:
到这里,支持 CORS 跨域请求就配置完成了,这里需要注意的地方是,你的Spring MVC 版本必须是 4.2 及以上。
官方博客:CORS support in Spring Framework
相关推荐
ajax跨域CORS方案 JSONP跨域请求方案.zip
Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料。 本资料 是 spring MVC系统中用jsonp进行跨域解析。可实现前后台交互。
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
php版跨域 ajax+jsonp例子源代码.zip
ASPNET_JSONP_demo(jq跨域)
基于jQuery的jsonp ajax跨域请求,
不同域之间相互请求资源,就算作“跨域”。 CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。 整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,...
PHP AJAX JSONP实现跨域请求使用范例
JSONP跨域和CORS跨域 什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同源策略 同源策略:域名、协议、端口均相同。 浏览器执行JavaScript脚本时,会...
1、地址...演示跨域问题以及跨子域名解决方法 2、地址http://a.test.com:8888/testAjaxCross/public/jsonp.do 演示jsonp解决跨域问题的三种方案jsonp、$getJSON、$ajax等
利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
vue-springboot-cros_jsonp:前初步跨域,cors,jsonp(新版springmvc)实现
spring boot 支持跨域 前台不需要jsonp 请求 正常js即可 spring boot 支持跨域 前台不需要jsonp 请求 正常js即可
基于ajax方式的跨域请求jsonp的前后台代码
jsonp跨域请求数据实现手机号码查询实例分析.docx
java web版 跨域 ajax+jsonp例子源代码.zip
虽然有同源策略的存在,但是在js中跨域也依然很常见,有document.domain、window.name、图片ping、jsonp、CORS,在这里简单总结下图片ping、jsonp和CORS备忘。 图片ping 图片可以从任何URL中加载,所以将img的src...
1. 连个tomcat 服务器演示跨域访问 2. JSONP的方式实现跨域访问
跨域jsonp资料包.zip跨域jsonp资料包.zip跨域jsonp资料包.zip跨域jsonp资料包.zip跨域jsonp资料包.zip跨域jsonp资料包.zip跨域jsonp资料包.zip
使用JSONP完成HTTP和HTTPS之间的跨域访问