Spring MVC 实现跨域资源 CORS 请求
来源:互联网 发布:淘宝商品降价通知 编辑:程序博客网 时间:2024/05/18 01:22
什么是 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
就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可以看看。
- CORS Filter Installation
- tomcat下CORS(跨域资源共享) 的配置
拦截器设置响应头 这种方式原理就是利用拦截器在方法执行前,我们增加请求的响应头,用来支持跨域请求。这种方案是可行的,大部分都是采用这种方案。我当时也是打算采用这种方案,直到我发现原来 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
下一篇文章是:从零开始学 Java - Spring 支持 CORS 请求踩的坑 ,我会讲讲我在升级 Spring MVC 版本的时候踩的坑,说多了都是泪。
http://blog.mayongfa.cn/
- Spring MVC 实现跨域资源 CORS 请求
- Spring MVC配置CORS(解决跨域请求)
- CORS实现跨域请求
- cors实现跨域请求
- 启用CORS实现Ajax跨域请求
- Java实现CORS跨域请求
- Java实现CORS跨域请求
- java利用cors实现跨域请求
- 跨域请求CORS
- Spring boot通过过滤器使用CORS实现JavaWeb跨域请求
- Spring Boot Web应用开发 CORS 跨域请求支持
- CORS跨域请求以及spring boot集成
- Spring MVC请求静态资源
- 什么是跨域,Cors协议,spring cors
- Spring MVC 与 CORS
- Spring MVC配置CORS
- CORS 跨域资源访问
- 浅析CORS跨域请求
- gulp-html-replace
- OSI七层模型与TCP/IP四层模型
- DbUnit使用简介
- IP地址分类
- linux配置tomcat
- Spring MVC 实现跨域资源 CORS 请求
- 【Java多线程与并发库】5.线程范围内共享变量的概念与作用
- Matlab Robotic Toolbox V9.10工具箱(四):常用函数
- JavaScript中的表格对象
- HDU 1242 Rescue (BFS+优先队列)
- Haar特征检测 - 人脸识别
- STL: for_each
- 前端模板的原理与实现
- 拯救白领颈椎:治疗肩周