CORS 理解

同源策略是web浏览器实现的一个重要的安全概念,它防止JavaScript代码对不同的来源(例如,不同的域)发出请求,而不是它所服务的来源。虽然同源策略有效地防止来自不同来源的资源,但它还阻止服务器和已知和可信来源的客户端之间的合法交互

跨源资源共享( CORS )是一种放松同源策略的技术,允许web页面上的JavaScript使用来自不同来源的restAPI。

以上参考

那么我们如何实现,让前端可以很方便的来通过我们的接口获取到数据。

启用 CORS

例如我们有下边这样的一个控制器

@RestController
public class GreetingController {private static final String template = "Hello, %s!";private final AtomicLong counter = new AtomicLong();@GetMapping("/greeting")public Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {System.out.println("==== in greeting ====");return new Greeting(counter.incrementAndGet(), String.format(template, name));}}

我们在前端通过 JQuery 来请求这个接口的资源的话,会发生错误。

这就是一个很普通的同源策略的问题,也就是所说的跨域请求。

我们可以通过 @CrossOrigin 这个注解来解决。

    @CrossOrigin(origins = "http://localhost:9000")@GetMapping("/greeting")public Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {System.out.println("==== in greeting ====");return new Greeting(counter.incrementAndGet(), String.format(template, name));}

@CrossOrigin 注解只允许对特定的方法进行跨域请求,默认情况下,它允许所有 origins,,所有 headers 。当然你可以设置更多的内容,origins, methods, allowedHeaders, exposedHeaders, allowCredentials or maxAge。在这里呢,我们只允许我们只允许http://localhost :9000发送跨源请求。

还可以在控制器类级别添加此注释

全局 CORS 配置

src/main/java/hello/Application.java

    @Beanpublic WebMvcConfigurer corsConfigurer(){return new WebMvcConfigurerAdapter() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/*").allowedOrigins("*");}};}

转载于:https://www.cnblogs.com/dowhile/p/SpringBoot-zhong-jie-jue-kua-yu-qing-qiu.html

SpringBoot 中解决跨域请求相关推荐

  1. Springboot中关于跨域问题的一种解决方法

    Springboot中关于跨域问题的一种解决方法 参考文章: (1)Springboot中关于跨域问题的一种解决方法 (2)https://www.cnblogs.com/zishu/p/107272 ...

  2. Java中SSM框架解决跨域请求

    方法一:@CrossOrigin注解的方法,只能作用在一个Controller层 直接在Controller类或方法前加上@CrossOrigin注解即可允许所有ip跨域访问 加在Controller ...

  3. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题...

    webservice 代码 1 /// <summary> 2 /// MESService 的摘要说明 3 /// </summary> 4 [WebService(Name ...

  4. SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求

    SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求 现代浏览器处于安全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求, ...

  5. HTTP中的跨域请求、HTTP报文结构、状态码

    目录 一.前驱知识学习 (1)请求报文 (2)响应报文 二.HTTP中的跨域请求 1. 什么是跨域请求 2.什么是同源策略 3.为什么要设置这种限制 3.1 攻击实例 3.2 攻击原理 4. 怎样取消 ...

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

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

  7. axios请求跨域前端解决_Vue中axios跨域请求解决方法

    跨域:指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制. 所谓同源是指,域名,协议,端口均相同,浏览器执行 js 脚本时,会检查这个脚本属 ...

  8. springboot项目解决跨域的几种方式

    跨域资源共享(CORS):通过修改Http协议header的方式,实现跨域.说的简单点就是,通过设置HTTP的响应头信息,告知浏览器哪些情况在不符合同源策略的条件下也可以跨域访问,浏览器通过解析Htt ...

  9. springboot实现ajax跨域请求

    有段时间没写文章了.看到有人提问ajax跨域请求的问题. 博主要再次强调,跨域,就是从不同的的IP端口获取数据,比如说,从www.baidu.com获取数据,就叫跨域!那么localhost:8080 ...

  10. 利用Access-Control-Allow-Origin响应头解决跨域请求

    标签:cors 跨域请求 ACAO 2015-11-28 18:53 12103人阅读 评论(0) 收藏 举报  分类: web前端(5)  J2EE服务器(2)  传统的跨域请求没有好的解决方案,无 ...

最新文章

  1. 使用redis时遇到的问题
  2. 获取线程结束代码(Exit Code)
  3. sql server 2005 T-SQL @@LANGUAGE (Transact-SQL)
  4. 【Linux 内核 内存管理】RCU 机制 ③ ( RCU 模式下添加链表项 list_add_rcu 函数 | RCU 模式下删除链表项 list_del_rcu 函数 )
  5. vs linux 交叉编译,VS结合VisualGDB搭建OpenWrt交叉编译远程调试开发环境
  6. SpringBoot源码笔记分析
  7. 7、Python文件操作工具 openpyxl 工具 2
  8. mysql 用户概念_传输概念 – db对象的用户/组/权限从mysql到postgresql
  9. JavaWeb笔记:CSS总结
  10. html中.inner样式,JavaScript-DOM动态控制Html标签对象样式和innerHTML、className属性
  11. 黑莓Torch 9800,了无新意落后主流机型
  12. 将$type添加到System.Text.Json序列化中,就像Newtonsoft那样用于动态对象属性
  13. flask-limiter限制单个IP访问的频率和次数
  14. shell脚本练习题
  15. 新手机出现陌生女人照片,客服:大数据时代可能性有很多
  16. 输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。
  17. SQL省市区三级表 脚本
  18. 要将OFD文件的base64编码转换为可下载的OFD文件
  19. 用vscode调试远程服务器的php
  20. 技巧---数学分析1:变换积分次序

热门文章

  1. 从P1到P7——我在淘宝这7年(一)
  2. 奇虎360开源其日志搜索引擎,可处理百万亿级的数据
  3. python 修改文件属性_Python实现在Windows平台修改文件属性
  4. python基础之psutil模块和发邮件(smtplib和yagmail)
  5. selenium之 chromedriver与chrome版本映射表(更新至v2.46)
  6. iview tree 之如何获取已勾选的节点
  7. 反向传播与梯度消失梯度爆炸
  8. java并发线程池---了解ThreadPoolExecutor就够了
  9. PHP之数组函数(2)
  10. curl基于URL的文件传输工具