文档章节

Spring Boot基础教程——web 应用开发-CORS 支持

哎小艾
 哎小艾
发布于 2017/06/04 23:16
字数 351
阅读 28
收藏 2

一、 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 注解进行细粒度的配置
全局配置:

@Configuration
public class CustomCorsConfiguration {
   @Bean
   public WebMvcConfigurer corsConfigurer() {
      return new WebMvcConfigurerAdapter() {
         @Override
         public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");
         }
      };
   }
}

或者是:

/**
* 全局设置
*
* @author wujing
*/
@Configuration
public class CustomCorsConfiguration2 extends WebMvcConfigurerAdapter {
   @Override
   public void addCorsMappings(CorsRegistry registry) {
      registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");
   }
}

定义方法:

/**
* @author wujing
*/
@RestController
@RequestMapping("/api")
public class ApiController {
   @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);
      return map;
   }
}

测试 js:

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

细粒度配置:

/**
* @author wujing
*/
@RestController
@RequestMapping(value = "/api", method = RequestMethod.POST)
public class ApiController {
   @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);
      return map;
   }
}

 

本文转载自:http://www.roncoo.com/

共有 人打赏支持
哎小艾
粉丝 14
博文 327
码字总数 163817
作品 0
深圳
程序员
私信 提问
转Spring Boot 教程系列学习

Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTfull API简单项目的快速搭建 Spring Boot基础教程3-配置文件详解:Properties和YAML Spring Boot基础教程4-配置...

小花卷juan
2017/06/14
297
0
探索SpringBoot中的SpringMVC

spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。spring mvc 是只是spring 处理web层请求的一个模块。因此他们的关系大概就是这...

melon_jj
11/01
0
0
教你理清SpringBoot与SpringMVC的关系

spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。spring mvc 是只是spring 处理web层请求的一个模块。因此他们的关系大概就是这...

别打我会飞
11/21
0
0
使用 Angular 5.0 和 Spring Boot 2.0 构建一个基本的 CRUD 应用

在所有 Web 开发的框架中,Anglar 和 Spring Boot 可以说是两个最流行的了。那么我们不妨看看如何在你的应用中使用它们。 现在技术进展得很快,跟上最新的趋势以及你喜欢的项目的最新发布版本...

oschina
02/06
10.2K
8
spring boot与spring mvc的区别是什么?

spring boot与spring mvc的区别是什么? 转载:https://blog.csdn.net/u014590757/article/details/79602309 spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运...

Elsa晓冰
09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
41分钟前
4
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
46分钟前
237
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
5
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部