Spring Boot Web应用开发 CORS 跨域请求支持
一、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://www.cnblogs.com/lywJ/p/10270970.html
Spring Boot Web应用开发 CORS 跨域请求支持相关推荐
- corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求
vue项目CORS跨域请求500,post请求变options请求,到底是什么情况. 提示:以下内容是一个非专业开发的我对跨域的理解,并不10分准确. 一.先介绍为什么明明发送的是Post请求,为什么 ...
- HTTP中CORS跨域请求的实现(C++|Qt框架实现)
目录 背景 关键 演示及源码 背景 HTTP中CORS跨域请求,可以获取其他服务器的数据: 这里用Qt框架实现! 逻辑如下: 浏览器访问127.0.0.1:80端口!80端口请求了127.0.0.1: ...
- 记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法
记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 参考文章: (1)记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 (2)https://www.cnblog ...
- java web 跨域_java web服务端CORS跨域配置
CORS介绍 CORS-CrossOrigin Resource Sharing,即跨域资源共享,它定义了一种服务器和浏览器的交互方式来确定是否允许跨域请求.CORS简单灵活,但有风险性,能实现aja ...
- CORS——跨域请求那些事儿
[本期嘉宾介绍]睿得,具有多年研发.运维.安全等IT相关从业经历.目前从事CDN.存储.视频直播点播的技术支持.喜爱钻研,喜爱编码,喜爱分享. 在日常的项目开发时会不可避免的需要进行跨域操作,而在实际 ...
- corspost请求失败_记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法
今天前后端在联调接口的时候,发生了跨域请求资源获取不到的问题. 首先说明下跨域问题的由来.引自HTTP 访问控制 的一段话: 当 Web 资源请求由其它域名或端口提供的资源时,会发起跨域 HTTP 请 ...
- java重定向跨域问题_重定向 CORS 跨域请求
TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...
- php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...
php前后端分离开发中要实现前后端参数信息交互,必须解决token标识验证问题. 步骤如下: 1.前端ajax发送请求时,要设置一个自定义header头.代码如下: $.ajax({ url:&quo ...
- Node.js设置CORS跨域请求中多域名白名单的方法
允许跨域请求,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名. 最常见的设置是: res.header('Access-C ...
最新文章
- 周长相等的正方形面积一定相等_必考单元:三年级下册面积计算公式+知识点+测试卷(附答案),重点内容,收藏练习!...
- tableview 展开
- msyql request quit
- 【JUC并发编程10】阻塞队列
- 蒟蒻浅谈树链剖分之一——两个dfs操作
- 【struts2】struts2中的Action详解
- Linux下安装和配置solr/tomcat/IK分词器 详细实例一.
- 基于前端javascript的搜索功能
- odis工程师一键导入导出匹配数据信息功能_机械重复做了这么久,才发现竟然可以批量用户导入导出...
- 游戏开发之函数的增强(相比于C语言)(C++基础)
- android贪吃蛇设计报告,基于android的贪吃蛇游戏设计与开发
- 黑莓Z10忘记BBID密码导致手机锁定解决方案
- 微信小程序:酒桌扑克娱乐喝酒小游戏
- java时间戳的单位_java – SimpleDateFormat – 解析时间戳,以毫秒为单位
- 通过httpurlconnection发带图片的文件
- ERP系统-库存子系统-申购单
- CSS之背景样式及边框样式
- YOLOX论文讲解和无人机检测项目实战
- ASP.NET 中验证的自定义返回和统一社会信用代码的内置验证实现
- Python:垃圾分类小游戏
热门文章
- 面试题:sql数据查询
- 找不到编译动态表达式所需的一种或多种类型。是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?...
- cmd不能用的解决方法
- JavaScript实用技巧(一)
- window.showModalDialog()用法及注意事项
- yelee博客的busuanzi访客统计失效问题解决
- redis的增加元素操作
- No module named pycurl(无法使用yum和pip的情况下的解决方案)
- linux学习心得(一)
- xampp index.php报错,XAMPP配置出现403错误“Access forbidden!”的解决办法