SpringBoot 实现跨域请求

Springboot 2.1.2集成CAS5.2.6版本之客户端集成  在这之前由于没有使用过Cas用来做单点登录,结果是一个坑接一个坑,我相信大多数第一次使用这个来做单点登录的大牛们=都会有类似的经历,今天就简单的把CAS客户端以SpringBoot的方式来讲述一下.(重点说一下忽略某些Url不使用CAS的情况),代码下载导入IDE即可使用 立即下载

跨域访问支持(Spring Boot、Nginx、浏览器)


一、Spring Boot跨域配置

我们的后端使用Spring Boot。Spring Boot跨域非常简单,只需书写以下代码即可。

@Configuration
public class CustomCORSConfiguration {
  private CorsConfiguration buildConfig() {
    CorsConfiguration corsConfiguration = new CorsConfiguration();
    corsConfiguration.addAllowedOrigin("*");
    corsConfiguration.addAllowedHeader("*");
    corsConfiguration.addAllowedMethod("*");
    return corsConfiguration;
  }
  @Bean
  public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", buildConfig());
    return new CorsFilter(source);
  }
}

代码非常简单,不做赘述。该代码在Spring Boot 1.5.4中测试通过。

二、Nginx跨域配置

某天,我们将Spring Boot应用用Nginx反向代理。而前端跨域请求的需求不减,于是乎。

Nginx跨域也比较简单,只需添加以下配置即可。

location / {
	proxy_pass http://localhost:8080;
	if ($request_method = 'OPTIONS') {
		add_header 'Access-Control-Allow-Origin' '*';
		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
		add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token';
		add_header 'Access-Control-Max-Age' 1728000;
		add_header 'Content-Type' 'text/plain; charset=utf-8';
		add_header 'Content-Length' 0;
		return 204;
	}
	if ($request_method = 'POST') {
		add_header 'Access-Control-Allow-Origin' '*';
		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
		add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token';
		add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token';
	}
	if ($request_method = 'GET') {
		add_header 'Access-Control-Allow-Origin' '*';
		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
		add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token';
		add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token';
	}
}

其中:add_header 'Access-Control-Expose-Headers' 务必加上你请求时所带的header。例如本例中的“Token”,其实是前端传给后端过来的。如果记不得也没有关系,浏览器的调试器会有详细说明。

参考文档:https://enable-cors.org/server_nginx.html

B.T.W,阿里云中文档描述到Nginx也可通过crossdomain.xml配置文件跨域:https://helpcdn.aliyun.com/knowledge_detail/41123.html ,不过笔者并未采用这种方式。

三、浏览器设置跨域

Chrome、Firefox本身是可以通过配置支持跨域请求的。

注:通过浏览器设置实现跨域的玩法,个人没有亲测过。


转载自:http://www.itmuch.com/work/cors/


TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR) 简单介绍了X-BAR。 阅读详情

相关推荐

RedPitaya火龙果板基础操作

火龙果板基础操作一级目录二级目录三级目录 一级目录 二级目录 三级目录

qq_41523340的博客 9717

SpringBoot 解决跨域问题的 5 种方案!

跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。但这个保护机制也带来了新的问题,它的问题是给不同站点之间的正常调用,也带来的阻碍,那怎么解决这个问题呢?接下来我们一起来看。

大家一起入坑 727

解决RK3566 USB OTG模式识别问题:从原理图分析到otg_mode文件操作全解析

本文深入解析RK3566 USB OTG模式识别问题,从硬件原理图设计到Linux内核的otg_mode文件操作,提供全面的调试方案。针对USB_OTG0_ID引脚电路设计、电源管理关联及内核驱动交互等关键点,给出实战调试技巧和常见问题解决方案,帮助开发者高效解决USB OTG模式切换难题。

eee77的博客 865

IDEA-SpringBoot学习笔记

IDEA-SpringBoot学习笔记手动创建一个maven SpringBoot应用1.pom.xml文件的编写:parent:dependencies:关于将应用打包成jar:2.启动类编写:3.domin中lombok的使用4.配置类(重要)1.@ImportResource("xxx.xml")注解:2.@ConditionalOnBean(name = "xxx")和@ConditionalOnMissingBean(name = "xxx")注解:3.@EnableConfigurationPr

qq_46225867的博客 2744

手把手教你用Cadence VPWLF源和参数扫描:搞定非周期激励与gmid曲线绘制(避坑指南)

本文详细介绍了如何在Cadence Virtuoso中使用VPWLF源生成复杂非周期激励信号,并结合gmid方法进行双参数扫描优化电路设计。通过实战案例和避坑指南,帮助工程师高效解决波形生成和参数可视化难题,提升模拟电路设计效率。

weixin_29260291的博客 423

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

flash跨域策略文件crossdomain.xml配置详解

CnCxzSec衰仔's Blog 0x00 目录   0x01 简介 0x02 crossdomain.xml的配置 0x03 总结   0x01 简介   flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据。   位于www.a.com域中的SWF文件要访问www.b.com的文

当你打算放弃梦想的时候,告诉自己再多撑一天,一个星期,一个月,再多撑一年吧。 3360

WinCC与PLC在西门子逻辑赛项中的通信配置避坑指南

本文针对西门子逻辑赛项中WinCC与PLC通信配置的常见问题,提供了一套实战避坑指南。重点解析了WinCC、PLC与EET仿真平台的三角通信架构,强调了IP地址规划、防火墙设置等关键环节的注意事项,并给出了系统化的故障诊断流程与排查技巧,帮助选手和技术人员快速定位并解决通信故障,确保监控系统稳定运行。

weixin_29165725的博客 107

过滤器(Filter)解决跨域问题

最近在做一个项目,前端资源与服务端单独部署。遇到一个跨域问题,常见的跨域问题可以通过jsonp方式解决。下面介绍另一种解决方式: 服务端环境:spring + dubbo + tomcat 第一步:在WEB-INF目录下添加一个crossdomain.xml文件,内容如下: <cross-domain-policy> <allow-access-from domain=...

wender的专栏 3021

VN5620以太网测试——环境搭建篇

CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。VN5620 接口支持各种可能的应用。它适用于与其他总线系统、网络参与(例如在模拟和生成帧、测试中的负载和错误)的同步以太网监控。在2021年Vector公司的以太网接口卡VN5610和VN5640设备已经陆续停产,相应被VN5620和VN5650代替。

诊断协议那些事儿's blog 8926

Go基础:Go语言详细介绍,环境搭建,及第一个程序详解

Go语言是Google开发的开源编程语言,具有高效、简洁、并发性强等特点。文章从Go语言的诞生背景、核心特性及应用领域展开介绍,并详细说明了Windows、Linux和macOS下的环境搭建步骤,包括安装、环境变量配置及测试方法。最后通过“Hello, World!”程序解析Go语言基本语法,并演示了编译发布和跨平台编译功能。全文涵盖了Go语言从入门到实践的完整流程,适合初学者快速上手。

数据知道的博客 6799

跨域策略文件crossdomain.xml的配置方法

一、crossdomain.xml文件的作用    跨域,顾名思义就是需要的资源不在自己的域服务器上,需要访问其他域服务器。跨域策略文件是一个xml文档文件,主要是为web客户端(如Adobe Flash Player等)设置跨域处理数据的权限。打个比方说,公司A部门有一台公共的电脑,里面存放着一些资料文件,专门供A部门内成员自己使用,这样,A部门内的员工就可以访问该电脑,其他部门人员则不允许访问。

蝈蝈的博客 4万+

【DaVinci Configurator专题】-6-将UDS&OBD诊断数据库文件CDD和PDX导入到CFG

CDD和ODX是两种诊断数据库文件。机器可读的诊断数据库其实就是将传统的Excel调查表等信息编辑成CDD或ODX文件。CDD是Vector私有的一种诊断数据库格式;ODX是国际标准的诊断数据交互格式。CANdelaStudio编辑CDD文件,以及也可以导出ODX文件;ODX Studio用于编辑ODX文件,诊断数据库的编辑其实就是诊断需求的定义。 下面以PDX为例,将其导入到DaVinci Configurator。 目录 1 打开DaVinci Configurator,导入PDX文件 2 解.

「汽车电子助手」的博客 6749

Spring Boot实现跨域请求

Spring Boot实现跨域请求一、 简介二、实现跨域的两种方式JSONP 跨域CORS 跨域三、Spring Boot配置跨域3.1、在方法上添加 @CrossOrigin 注解 ,仅对该接口有效:3.2、在类上添加@CrossOrigin 注解,仅对该类下的接口有效:3.3、全局配置,新增配置类WebMvcConfig.java,对该Application有效:4、原理简单剖析参考连接 一、...

Macky_He的博客 8354

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

springboot中如何实现跨域请求

我们知道Url的一般格式:协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址比如:https://www.itquanmingxing.cn:8080/users 是由https + www + itquanmingxing.cn + 8080 + users组成。只要协议,子域名,主域名,端口号这四项组成部分中有一项不同,就可以认为是不同的域,不同的域之间互相访问资源,就被称之为跨域。而我们的浏览器默认是不允许跨域请求的,因为它们都使用了同源策略,同源策略是由 Netscape 提出的一个著名

daimenglaoshi的博客 3741

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot中实现跨域请求

选择适合你需求的方法来配置CORS。如果你的应用程序需要处理来自多个源的请求,建议使用全局配置方法。如果只有特定的控制器或请求处理方法需要处理跨域请求,可以使用。如果你的应用程序使用了Spring Security,你需要在Spring Security配置中添加CORS配置。在Spring Boot中,你可以在控制器或者具体的请求处理方法上使用。如果你想要为你的整个应用程序配置CORS,可以在一个配置类中使用。如果你想要设置一些全局默认的CORS配置,可以在。注解来允许跨域请求。

BABA8891的博客 1599

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

springboot系列文章之实现跨域请求(CORS)

CORS介绍 跨域资源共享向来都是热门的需求,我们可以使用 CORS 来快速实现 跨域访问,只需要在服务端进行授权即可,无需在前端添加额外的设置 简单说,CORS是一种访问机制,英文全称: Cross-Origin Resource Sharing,即我们说的跨域资源共享。当一个资源从与该资源本身所在服务器不同的域或端口请求一个资源时,资源会发起一个跨域HTTP请求。比如,在一个域名下的网页中...

pjmike的博客 2226

拦截器实现SpringBoot跨域请求

因为springboot的@CrossOrigin注解在拦截器上无效,有时候就不能在拦截器返回给数据前端信息。 所以自己实现拦截器实现跨域处理,再在普通拦截器上,在HttpServletResponse封装返回给前端的信息 。 这里就要先了解CORS的跨域原理,下面这段摘自https://www.jianshu.com/p/f5a88983f42d。 cross-origin reso.........

yaoct的博客 3597

SpringBoot下如何配置实现跨域请求?

一、什么是跨域请求? 跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样。说白了就是ip、网络协议、端口都一样的时候,就是同一个域,否则就是跨域。这是由于Netscape提出一个著名的安全策略——同源策略造成的,这是浏览器对JavaScript施加的安全限制。是防止外网的脚本恶意攻击服务器的一种措施。 二、SpringBoot工程如何解决跨域问题...

pengjunlee的博客 1459

如何在Spring Boot中实现跨域请求?

在Spring Boot应用程序中处理跨域请求(CORS,Cross-Origin Resource Sharing)是一个常见的需求。Spring Boot提供了多种方式来实现跨域支持。

Pmyx_wyh的博客 483

SpringBoot工程如何实现跨域请求

SpringBoot工程如何实现跨域请求1.问题描述2.解决方法:CORS解决跨域问题Springboot配置CORS3.内容含义1:Access-Control-Allow-Headers: 服务器允许使用的字段,定位为"*"代表所有的都可以。2:Access-Control-Allow-Methods: 真实请求允许的方法,定位为"*"代表所有的都可以。例如:"POST", "GET", "P...

lihaoyiding的博客 690

SpringBoot下配置实现跨域请求

一、什么是跨域请求? 跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样。说白了就是ip、网络协议、端口都一样的时候,就是同一个域,否则就是跨域。这是由于Netscape提出一个著名的安全策略——同源策略造成的,这是浏览器对JavaScript施加的安全限制。是防止外网的脚本恶意攻击服务器的一种措施。 二、SpringBoot工程如何解决跨域问题? ...

weixin_43525290的博客 328

Spring Boot + AngularJS 前端AngularJS发送get,post请求实现跨域请求

Spring Boot + AngularJS 前端AngularJS发送get,post请求实现跨域请求 后端SpringBoot服务设置 新建类CorsConfiguration @Configuration public class CorsConfiguration extends WebMvcConfigurerAdapter { @Override public void addCor...

xtwu007的博客 998

Springboot实现跨域请求

之所以需要用到跨域请求,目的在于现在的Java项目,几乎基本上都前后端分离,除一些较老的维护项目外(通常是单体或者是maven多模块形式,不过本质上还是将前端放在webapps下)。 SpringBoot实现跨域其实和Spring是一样,区别不大,如果要说区别的话,Spring需要在对应的xml文件中配置bean,而SpringBoot则通过注解的方式。 Spring配置跨域请求可参考我的这篇...

weixin_30339969的博客 101
上一篇: 勤奋需要用对地方
下一篇: the import cannot be resolved问题
intelrain
博客等级 码龄10年 3936粉丝 216原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值