SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求
SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求
现代浏览器处于安全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求,默认情况下是被禁止的,ip(域名)不同、或者端口不同、协议不同(比如http、https) 都会造成跨域问题。
一、 前端解决方案
1. 使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,就是动态创建
script 标签,然后利用 script 的 SRC 不受同源策略约束来跨域获取数据。缺点是需
要后端配合输出特定的返回信息。
2. 利用反应代理的机制来解决跨域的问题,前端请求的时候先将请求发送到同源地址的后
端,通过后端请求转发来避免跨域的访问。
后来 HTML5 支持了 CORS 协议。CORS 是一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制。它通过服务器增加一个特殊的 Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持 CORS、并且判断 Origin 通过的话,就会允许 XMLHttpRequest 发起跨域请求。
前端使用了 CORS 协议,就需要后端设置支持非同源的请求,对于SpringBoot 对于CORS 同样有着良好的支持,
首先附上官网地址:
https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#boot-features-cors
我们这里提供三种配置方式:
- 配置 过滤器
@Configuration
public class GlobalCorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();config.addAllowedOrigin("*");config.setAllowCredentials(true);config.addAllowedMethod("*");config.addAllowedHeader("*");config.addExposedHeader("*");UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();configSource.registerCorsConfiguration("/**", config);return new CorsFilter(configSource);}
}
2.配置拦截器
@Configuration
public class MyConfiguration extends WebMvcConfigurerAdapter {@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedHeaders("*") .allowedOrigins("*") .allowedMethods("*"); }
}
以上两种是针对全局的配置方式 ,
3. 单个请求的跨域通过 @CrossOrigin 注解来实现
@RequestMapping("/hello")
@CrossOrigin("http://localhost:8080")
public String hello( ){
return "Hello World";
}
SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求相关推荐
- SpringBoot设置允许跨域请求
跨域 一个资源会发起一个跨域HTTP请求(Cross-site HTTP request), 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时 .比如说,域名A(http://doma ...
- Node.js设置CORS跨域请求中多域名白名单的方法
允许跨域请求,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名. 最常见的设置是: res.header('Access-C ...
- springboot实现ajax跨域请求
有段时间没写文章了.看到有人提问ajax跨域请求的问题. 博主要再次强调,跨域,就是从不同的的IP端口获取数据,比如说,从www.baidu.com获取数据,就叫跨域!那么localhost:8080 ...
- Chrome设置允许跨域请求
项目开发过程中,跨域问题再所难免,解决跨域的方法也很多.最常用的方法莫过于配置Nginx解决跨域(自行百度Nginx跨域设置).但是作为开发环境,临时调试一些东西,最快的方法是设置Chrome允许跨域 ...
- springboot 添加允许跨域_springboot设置cors跨域请求的两种方式
1.第一种: public class CorsFilter extends OncePerRequestFilter { static final String ORIGIN = "Ori ...
- springboot + vue项目跨域请求解决方案
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS 以下是跨域解决方案 服务端添加一个拦截器即可 @Compon ...
- Spring Boot学习总结(6)——SpringBoot解决ajax跨域请求问题的配置
ajax是一种创建交互式网页应用的网页开发技术,是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换.而ajax的跨域问题则是请求了其他项目的接口地址,当协议.子域名.主域名.端口号中 ...
- IIS设置允许跨域请求
1. 打开 IIS 管理器,选择 HTTP 响应标头. 2. 设置内容如下. Access-Control-Allow-Headers:Content-Type, api_key, Authoriza ...
- SpringBoot允许跨域请求
在前后端分离的架构中,允许跨域请求是一个很重要的设置.SpringBoot项目中允许跨域请求比较简单,只需要我们定义好配置类即可. 在com.example.csdn.config包里面创建CorsC ...
最新文章
- 深入浅出开源性能测试工具 Locust (使用篇 1)
- TeamCity 和 Nexus 的使用
- IsomorphicStrings(leetcode205)
- PHP微信开发之获取access_token
- [译]React Component最佳实践
- 智力+贪心的过河问题
- Linux vector最大存储数量,C++ STL vector容量(capacity)和大小(size)的区别
- Nginx之配置后端服务器组
- 【上采样问题】将浮点运算转换成整数运算
- Voxengo音频插件合集:Voxengo Total Bundle Mac
- 消息称微软Windows暂停接受华为新订单;2019 Q1 亚太区公有云IaaS、PaaS服务收入排名现已揭晓……...
- p站,一个神奇的网站
- C#实现百度地图附近搜索调用JavaScript函数
- 界面美化 —— 布局
- 在ubuntu中运行sudo apt-get update报错The following signatures couldn‘t be verified because the public key
- 安全协议系列(三)----CCMP与WPA-PSK
- 天线的S11,S12,S21,S22参数解析(个人理解仅供参考)
- Python之浅谈exec函数
- 智能路灯引路冰蓄冷替空调
- linux脚本执行mysql命令
热门文章
- Linux内核分析 - 网络[五]:vlan协议-802.1q
- 【数据结构】----C语言实现栈操作
- 谷粒商城高级篇爬坑笔记--错误异常信息乱码问题
- Spring中拦截/和拦截/*的区别
- HDFS-HA-federation的机制和功能组件
- 任务型对话(一)—— NLU/SLU(意识识别和槽值填充)
- Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
- 上班第一天,Myeclipse 2014上SVN部署以及maven 配置
- Python 实现的下载op海贼王网的图片(网络爬虫)
- (16):Silverlight 2 数据与通信之JSON