论职业的重要性

问:为什么所有家长都希望自己的孩子成为公务员?
答:体面、有权、有钱又悠闲。

问:为什么所有家长都希望自己的孩子成为律师或医生?
答:体面、有钱、有技能。

问:为什么所有家长都不怎么知道「程序猿」这个职业?
答:不体面、没有钱,还要技能要技能要技能。

什么是 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就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可以看看。

  1. CORS Filter Installation
  2. 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 版本的时候踩的坑,说多了都是泪。

从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求相关推荐

  1. 从零开始学 Java - Spring MVC 统一异常处理

    看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或者你已经练功到了孤独求败,等了半辈子 ...

  2. java任务调度定时器,从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  3. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  4. Spring全家桶-Spring Security之跨域与CORS与防护

    Spring全家桶-Spring Security之跨域与CORS Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以 ...

  5. Spring MVC 的跨域解决方案

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 王森 来源 | cnblogs.com/wan ...

  6. jQuery中Ajax+Spring MVC实现跨域请求

    项目开发中,某个可独立.也可集成的子业务模块须要向外开放相关API接口,先说下项目本身使用了jersery来实现RESTful webservice以名词形式公布API.有意思的是在实际的操作中同事却 ...

  7. 从零开始学 Java - Spring AOP 拦截器的基本实现

    一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...

  8. spring cloud gateway跨域全局CORS配置

    在Spring 5 Webflux中,配置CORS,可以通过自定义WebFilter实现: 注:此种写法需真实跨域访问,监控header中才会带相应属性. 代码实现方式 import org.spri ...

  9. 从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

最新文章

  1. SSM框架之批量增加示例(同步请求jsp视图解析)
  2. LSTM之父再度炮轰Hinton:“本田奖”不该授予他,颁奖词有六大谬误
  3. UCI机器学习数据集库
  4. putty保存用户名和密码_使用PuTTY远程登录软件登录 Linux 实例
  5. mysql 两张表合并查询_中级数据分析-多表查询
  6. SAP Spartacus organization unit里org list的focus实现问题
  7. C++ 通讯录设计(七)
  8. 多少秒算长镜头_你了解植保无人机一天到底能够干多少活吗??
  9. node mysql json_Node.js JSON模块用法实例分析
  10. SQL Server schema 用法
  11. LayaAir graphics 矢量绘图之直线、折线、曲线
  12. 20191202每日一句
  13. 5G时代下的移动边缘计算(MEC)探索系列之四
  14. 9008刷机工具_黔隆科技刷机教程OPPOR9S忘记密码免刷机保资料解屏幕锁教程
  15. 移动安全-java JEB安装使用
  16. 微信小程序调用扫码功能
  17. 推荐书籍:RNA甲基化表观转录组学
  18. 用python发邮件(带附件)
  19. sql-labs闯关32~37
  20. 警惕:信用卡分期陷阱

热门文章

  1. Character的static方法
  2. 人工智能时代,技术人员应该掌握的技能
  3. 在mac中配置apache+php5.3+mysql的环境,修改hosts
  4. 用shell写的ftp工具
  5. HttpClient使用具体解释
  6. WP8开发日志(3):MVC设计模式进阶——绑定多个数据集
  7. 流处理框架Storm简介
  8. 动态设置HTML:v-html
  9. python : itertools 中的 islice : 获取迭代器结果的切片,消耗迭代器
  10. TensorFlow 中 tf.app.flags.FLAGS 的用法介绍