解决跨域请求的filter

Spring boot Filter无法注入redisTemplate 看了好多大佬的文章,并没有很好的解决问题。 描述一下版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> </parent> 阅读详情


@Component
public class SimpleCORSFilter implements Filter {
  private final RedisTemplate<String, String> redisTemplate;
  private final String key = "cors:prep:medical";

  @Autowired
  public SimpleCORSFilter(RedisTemplate<String, String> redisTemplate) {
    this.redisTemplate = redisTemplate;
    redisTemplate.opsForSet().add(key, "token");
  }

  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = ((HttpServletRequest) req);
    HttpServletResponse response = (HttpServletResponse) res;
    if (request.getMethod().equals("OPTIONS")) {
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
      response.setHeader("Access-Control-Max-Age", "0");
      response.setHeader("Access-Control-Allow-Headers", StringUtils.join(redisTemplate.opsForSet().members(key), ','));
      response.setStatus(200);
      return;
    } else {
      response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
      Enumeration<String> headerNames = request.getHeaderNames();
      while (headerNames.hasMoreElements()) {
        redisTemplate.opsForSet().add(key, headerNames.nextElement());
      }
    }
    chain.doFilter(req, res);
  }

  public void init(FilterConfig filterConfig) {
  }

  public void destroy() {
  }

}

由于“Content-type: text/html”不是一个简单的头,它会先向"http://bar.org/b"发出一个OPTIONS的HTTP请求。 回复可能包含这样的头:

Access-Control-Allow-Origin: http://foo.org

Access-Control-Max-Age: 3628800

Access-Control-Allow-Methods: GET,PUT, DELETE

Access-Control-Allow-Headers: content-type

"Access-Control-Allow-Origin"表明它允许"http://foo.org"发起跨域请求

"Access-Control-Max-Age"表明在3628800秒内,不需要再发送预检验请求,可以缓存该结果

"Access-Control-Allow-Methods"表明它允许GET、PUT、DELETE的外域请求

"Access-Control-Allow-Headers"表明它允许跨域请求包含content-type头

如果预检验请求获得通过,接下来Javascript就会发起真实的COR请求,过程跟简单的COR请求类似。



【问题解决】 后端配置跨域的解决方案 前言   当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。   比如,站点 http://domain-a.com 的某 HTML 页面通过 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。   出于安全原因,浏览器限制从脚本内发起的跨源HTTP... 阅读详情

相关推荐

跨域访问Filter实例

JAVA配置跨越访问Filter APP要访问WEB系统,需要进行跨域设置 关键: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {}

filter导致跨域失效_跨域问题时的Filter无效

我页面用Web Uploader进行图片上传,后台使用一个过滤器解决跨域的options问题,然后我给入口类加上了这个过滤器注解配置,但是无效页面代码:选择图片// 初始化Web Uploadervar uploader = WebUploader.create({// 选完文件后,是否自动上传。auto: true,withCredentials: true, // 支持CORS跨域带cook...

weixin_42467960的博客 859

python:numpy分享(保姆级教程)

创建数组:array和ndarray、rand()、randn()、arange()、randint()、uniform()astype()基础函数:ceil()、floor()、rint()、argmax()、argmin()、cumsum()、cumprod()numpy 是数据分析必不可少的第三方库,具有高性能的特点,多用于做数组分析。内置函数:ceil()、floor()、rint()主要用于数组计算,支持多维数组。array和ndarray。比较函数:all、any。去重函数:unique。

sulin123123的博客 1730

SpringBoot简单配置解决跨域问题

该文章说明了SpringBoot项目解决跨域的办法,仅仅需要简单的几步配置就可以处理 1、通过JavaWEB中的三大组件之一Filter完成拦截 import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 该Filter起到拦截作用 * * @auth

weixin_44684539的博客 955

STM32C8T6实战:用PID算法搞定超级电容的10W无线恒功率充电(附代码避坑)

本文详细介绍了如何使用STM32C8T6和PID算法实现超级电容的10W无线恒功率充电。通过优化硬件设计、动态调整PID参数以及三重滤波技术,解决了超级电容充电过程中的功率尖峰和效率问题。附有代码示例和调试经验,帮助开发者快速实现高效稳定的无线充电方案。

weixin_29190169的博客 405

经典脉冲激光测距原理&雷达方程

脉冲激光测距机的工作过程如下:首先用瞄准光学系统瞄准目标,然后接通激光电源,储能电容器充电,产生触发闪光灯的触发脉冲,闪光灯点亮,激光器受激辐射,从输出反射镜发射出一个前沿陡峭、峰值功率高的激光脉冲,通过发射光学系统压缩光束发射角后射向目标。通过计算激光发射功率经介质传输的衰减,目标表面截获和反射的光功率,到达接收视场的光功率,以及接收光学系统接收到的光功率,就可以得到到达光电探测器的光功率,即接收功率。⑤光東路程上的折射率变化;),测量光脉冲到达目标并由目标返回到接收机的时间,由此计算出目标的距离。

weixin_46153372的博客 2525

权限框架SpringSecurity(二)——前后端分离登录

权限框架SpringSecurity(二)——前后端分离登录

scorpio的博客 5362

影刀RPA:轻松搞定Excel表格自动化操作

影刀RPA是一款功能强大的自动化工具,通过模拟人类操作实现各种重复性任务的自动化。零代码操作:通过拖拽式流程设计器,无需编程基础即可快速上手。功能丰富:提供丰富的组件库,涵盖文件操作、数据处理等多种功能。高效稳定:支持多任务并行,确保任务的高效执行和稳定性。支持Python语法:内置数据表格,支持Python语法,对新手友好,同时具备循环功能。通过影刀RPA,您可以轻松实现Excel表格的拆分、列数据合并和归档工作的自动化。这不仅节省了手动操作的时间,还能确保数据处理的高效和准确,提升工作效率和管理水平。

watwrmoon的博客 2560

工具——Fiddler(二)数据信息分析

抓包是Fiddler的最基本的应用,以本博客为例,启动Fiddler之后,在浏览器中输入http://blog.youkuaiyun.com/ohmygirl 键入回车之后,在Fiddler的web session界面捕获到的HTTP请求如下图所示: #号列中的图标,每种图标代表不同的相应类型,具体的类型包括: 另外,注意请求的host字段。可以看到有来自多个www.youkuaiyun.com的子域名的响应,说明在大型网站的架构中,大多需要多个子域名,这些子域名可能是单独用于缓存静态资源的,也可能是专门负责媒体资源的,或者是

Eve12345678的博客 935

大宗农产品交易知识图谱推理引擎的构建--需求分析

大宗农产品交易知识图谱推理引擎的构建 一、项目概述 ​ 进入信息时代,全球产生的数据量爆炸式增长,一方面数据产生的方式发生改变,由手工产生越来越多地转为自动化生成,另一方面,人类的活动也越来越依赖数据;民以食为天,粮食方面的信息数据对人类来说至关重要,而当前繁杂的数据已经超出了人工处理的范围,这就对数据采集和数据处理提出了新的要求。 知识图谱是将大量收集的数据整理成机器能处理的知识库,并实现可视化的展示。知识图谱本质上是一种大规模的语义网络,其主要目的是对真实世界里的实体或概念之间的关联关系进行描述;构造

qq_40583949的博客 2586

filter导致跨域失效_利用Filter解决跨域请求的问题

1、为什么出现跨域。很简单的一句解释,A系统中使用ajax调用B系统中的接口,此时就是一个典型的跨域问题,此时浏览器会出现以下错误信息,此处使用的是chrome浏览器。错误信息如下:jquery-1.8.0.min.js:3 Failed to load http://localhost:8081/authz/openapi/v1/token: No 'Access-Control-Allow-O...

weixin_39533896的博客 943

华为OD新系统机试真题 4.26 -最大化游戏试玩资格分发

华为OD机试新系统真题【最大化游戏试玩资格分发】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统机试 4月26号真题【最大化游戏试玩资格分发】。

qq_45776114的博客 826

cors-filter使用,cors-filter解决跨域访问,cors-filter跨域请求

cors-filter使用,cors-filter解决跨域访问,cors-filter跨域请求 ================================ ©Copyright 蕃薯耀 2020-11-25 https://www.cnblogs.com/fanshuyao/ cors-filter为第三方组件。 一、官网地址 http://software.dzhuvinov.com/c...

蕃薯耀的博客 1075

uboot引导vxworks--t2080调试记录

开发环境: t2080rdb, uboot2015, vxworks7.01. 《VxWorks_7_fsl_t2t4_BSP_Supplement_Guide__SR0620.pdf》描述: 实际上默认创建的vip,profile选项为none时,vip内核配置中是包含了INCLUDE_END选项的。所以在创建vip的时候最好就添加上PROFILE_DEVELOPMENT。 2. 内核参数bootargs是一些网络参数设置=> pri bootargs bootargs=memac(1,0)b109304

珂珂可爱多 2642

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

filter导致跨域失效_cors跨域请求配置access-control-allow-origin:无效解决方案

Cors跨域请求,配置Access-Control-Allow-Origin:"",无效解决方案由于应用需要跨域请求数据,博主在JDK8、Tomcat7.0的cors可以配置Access-Control-Allow-Origin:"*",但是我按照文档配置以后却没有生效,一度怀疑是tomcat或者jdk的问题,最后想起来web.xml是按照从前往后的顺序加载的。解决方案:是filter位置的问题,...

weixin_35029527的博客 1380

OV9734 DATASHEET,完整规格书

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

利用Filter解决跨域请求的问题

1、为什么出现跨域。 很简单的一句解释,A系统中使用ajax调用B系统中的接口,此时就是一个典型的跨域问题,此时浏览器会出现以下错误信息,此处使用的是chrome浏览器。 错误信息如下: jquery-1.8.0.min.js:3 Failed to load http://localhost:8081/authz/openapi/v1/token: No 'Acces...

weixin_33810302的博客 809

efm32 入门.pdf

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

filter解决请求跨域的问题

前后端分离的接口请求由于分别部署在了不同的服务器下,所以往往存在请求跨域,这里后端需要处理返回response,可解决跨域问题,设置如下: response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin")); response.setHeader("Access-Control-Allow-Credentials", "true"); respo...

奥潤吉的博客 369

Springboot 处理跨域请求(AJAX、VUE)

什么是跨域? 由于安全原因,浏览器都遵循着同源原则,拦截了不同域名之间的请求。跨域请求,是指能让不同域名之间,可以相互发送请求。 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域HTTP请求(Cross-site HTTP request)。 比如说,域名A ( http://domaina.example ) 的某 Web 应用程序中通过标签引入了域

二一点 9394

Spring Boot实现Filter解决跨域和请求类型转换问题

Filter 在 Web 开发中有广泛的应用,常见的应用场景包括身份验证与授权、日志记录与监控、字符编码转换、数据压缩与解压、防止 XSS 攻击、跨域请求处理等。总的来说,Filter 是 Java Web 开发中非常有用的一种组件,可以通过它实现各种与请求和响应相关的功能,提高 Web 应用程序的可靠性、安全性和性能。:多个 Filter 可以形成一个过滤器链,一个请求在被 Servlet 处理之前会经过这个链上的所有 Filter 的处理,然后再到达 Servlet。

Demon_Hao的博客 975

服务器端filter解决ajax简单请求跨域访问问题

在web项目中添加一个filter。  重写doFilter(ServletRequest request,ServletResponse response,FilterChain chain)方法: HttpServletResponse res=(HttpServletResponse) response; res.addHeader("Access-Control-Allow-Ori...

chenyl 572

通过添加实现Filter接口的过滤器解决跨域请求问题

@Component public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, Ser...

coolmanX7的博客 358

跨域_Cross-origin resource sharing

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

qq_53318302的博客 1023

关于AJAX跨域的两种解决方法

记录一下自己解决ajax跨域无法正常显示的两种解决方案。 后端解决方法(配置filter) 我用的是SpringBoot,使用下面配置即可。 package com.example.config; import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet....

sinat_16744909的博客 228
上一篇: 数据库读写分离的简单思路
下一篇: 实体类滤空更新(JPQL拼接)
小光哥C3P0
博客等级 码龄9年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值