一、Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等

CORS与JSONP相比

1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。

2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。

3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS

浏览器支持情况

Chrome 3+

Firefox 3.5+

Opera 12+

Safari 4+

Internet Explorer 8+

二、在spring MVC 中可以配置全局的规则,也可以使用@CrossOrigin注解进行细粒度的配置。

全局配置:

@Configurationpublic classCustomCorsConfiguration {@BeanpublicWebMvcConfigurer corsConfigurer() {return newWebMvcConfigurerAdapter() {@Overridepublic voidaddCorsMappings(CorsRegistry registry) {registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");}};}}

或者是

/*** 全局设置**@authorwujing*/@Configurationpublic class CustomCorsConfiguration2 extendsWebMvcConfigurerAdapter {@Overridepublic voidaddCorsMappings(CorsRegistry registry) {registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");}}

定义方法:

/***@authorwujing*/@RestController@RequestMapping("/api")public classApiController {@RequestMapping(value= "/get")public HashMap<String, Object>get(@RequestParam String name) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("title", "hello world");map.put("name", name);returnmap;}}

测试js:

$.ajax({url:"http://localhost:8081/api/get",type:"POST",data: {name:"测试"},success:function(data, status, xhr) {console.log(data);alert(data.name);}});

细粒度配置

/***@authorwujing*/@RestController@RequestMapping(value= "/api", method =RequestMethod.POST)public classApiController {@CrossOrigin(origins= "http://localhost:8080")@RequestMapping(value= "/get")public HashMap<String, Object>get(@RequestParam String name) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("title", "hello world");map.put("name", name);returnmap;}}


转自:http://www.roncoo.com/article/detail/125503

代码:https://github.com/JeromeSuz/demo_spring_boot/blob/master/src/main/resources/static/cors.html
延伸阅读
HTML5安全风险详析之一:CORS强攻 

转载于:https://www.cnblogs.com/lywJ/p/10270970.html

Spring Boot Web应用开发 CORS 跨域请求支持相关推荐

  1. corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求

    vue项目CORS跨域请求500,post请求变options请求,到底是什么情况. 提示:以下内容是一个非专业开发的我对跨域的理解,并不10分准确. 一.先介绍为什么明明发送的是Post请求,为什么 ...

  2. HTTP中CORS跨域请求的实现(C++|Qt框架实现)

    目录 背景 关键 演示及源码 背景 HTTP中CORS跨域请求,可以获取其他服务器的数据: 这里用Qt框架实现! 逻辑如下: 浏览器访问127.0.0.1:80端口!80端口请求了127.0.0.1: ...

  3. 记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法

    记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 参考文章: (1)记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 (2)https://www.cnblog ...

  4. java web 跨域_java web服务端CORS跨域配置

    CORS介绍 CORS-CrossOrigin Resource Sharing,即跨域资源共享,它定义了一种服务器和浏览器的交互方式来确定是否允许跨域请求.CORS简单灵活,但有风险性,能实现aja ...

  5. CORS——跨域请求那些事儿

    [本期嘉宾介绍]睿得,具有多年研发.运维.安全等IT相关从业经历.目前从事CDN.存储.视频直播点播的技术支持.喜爱钻研,喜爱编码,喜爱分享. 在日常的项目开发时会不可避免的需要进行跨域操作,而在实际 ...

  6. corspost请求失败_记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法

    今天前后端在联调接口的时候,发生了跨域请求资源获取不到的问题. 首先说明下跨域问题的由来.引自HTTP 访问控制 的一段话: 当 Web 资源请求由其它域名或端口提供的资源时,会发起跨域 HTTP 请 ...

  7. java重定向跨域问题_重定向 CORS 跨域请求

    TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...

  8. php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...

    php前后端分离开发中要实现前后端参数信息交互,必须解决token标识验证问题. 步骤如下: 1.前端ajax发送请求时,要设置一个自定义header头.代码如下: $.ajax({ url:&quo ...

  9. Node.js设置CORS跨域请求中多域名白名单的方法

    允许跨域请求,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名. 最常见的设置是: res.header('Access-C ...

最新文章

  1. 周长相等的正方形面积一定相等_必考单元:三年级下册面积计算公式+知识点+测试卷(附答案),重点内容,收藏练习!...
  2. tableview 展开
  3. msyql request quit
  4. 【JUC并发编程10】阻塞队列
  5. 蒟蒻浅谈树链剖分之一——两个dfs操作
  6. 【struts2】struts2中的Action详解
  7. Linux下安装和配置solr/tomcat/IK分词器 详细实例一.
  8. 基于前端javascript的搜索功能
  9. odis工程师一键导入导出匹配数据信息功能_机械重复做了这么久,才发现竟然可以批量用户导入导出...
  10. 游戏开发之函数的增强(相比于C语言)(C++基础)
  11. android贪吃蛇设计报告,基于android的贪吃蛇游戏设计与开发
  12. 黑莓Z10忘记BBID密码导致手机锁定解决方案
  13. 微信小程序:酒桌扑克娱乐喝酒小游戏
  14. java时间戳的单位_java – SimpleDateFormat – 解析时间戳,以毫秒为单位
  15. 通过httpurlconnection发带图片的文件
  16. ERP系统-库存子系统-申购单
  17. CSS之背景样式及边框样式
  18. YOLOX论文讲解和无人机检测项目实战
  19. ASP.NET 中验证的自定义返回和统一社会信用代码的内置验证实现
  20. Python:垃圾分类小游戏

热门文章

  1. 面试题:sql数据查询
  2. 找不到编译动态表达式所需的一种或多种类型。是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?...
  3. cmd不能用的解决方法
  4. JavaScript实用技巧(一)
  5. window.showModalDialog()用法及注意事项
  6. yelee博客的busuanzi访客统计失效问题解决
  7. redis的增加元素操作
  8. No module named pycurl(无法使用yum和pip的情况下的解决方案)
  9. linux学习心得(一)
  10. xampp index.php报错,XAMPP配置出现403错误“Access forbidden!”的解决办法