Java过滤器配置类导致跨域问题:Request header field token is not allowed by Access-Control-Allow-Headers in prefli

这篇具有很好参考价值的文章主要介绍了Java过滤器配置类导致跨域问题:Request header field token is not allowed by Access-Control-Allow-Headers in prefli。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、技术栈

前端:Vue、Axios
后端:Spring Security、SpringBoot、JWT等等

二、问题描述

报错信息如下(前端):

Access to XMLHttpRequest at 'http://localhost:8081/restaurant/list' from origin 'http://localhost:8080' has been blocked by CORS policy: Request header field token is not allowed by Access-Control-Allow-Headers in preflight response.
Error: Network Error
    at createError (createError.js?2d83:16:1)
    at XMLHttpRequest.handleError (xhr.js?b50d:99:1)
GET http://localhost:8081/restaurant/list net::ERR_FAILED

java跨域过滤器,笔记,java,前端,spring boot,跨域问题
报错信息翻译:
在preflight响应中,Access-Control-Allow-Headers不允许请求报头字段标记。
这个翻译也让我们很快知道了问题的所在,就是Access-Control-Allow-Headers里面不允许token字段出现,也就是说,token字段不允许出现在Headers里面。
我也看到这个问题看起来是没有走到后端,我Debug了一下后端的过滤器,发现有写过滤器可以进行Debug,但是有些过滤器根本没有进行Debug就结束了,我Debug了一下我后端接口的Controller接口,也没有走到那里,这说明我的请求没有走到接口,而是背被某个过滤器给劫持了,我自己也看了很久,在网上翻看了一些资料之后,我发现了解决方法。

三、解决方法

在Java项目的过滤器配置类中,加入下面的配置信息:

response.setHeader("Access-Control-Allow-Headers", "token, access-control-allow-origin, authority, content-type, version-info, X-Requested-With");

java跨域过滤器,笔记,java,前端,spring boot,跨域问题

完整的配置文件如下:

@Component
@Slf4j
public class SimpleCORSFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest reqs = (HttpServletRequest) req;
        String curOrigin = reqs.getHeader("Origin");
        log.info("curOrigi:" + curOrigin);
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD,PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "token, access-control-allow-origin, authority, content-type, version-info, X-Requested-With");
        HttpServletRequest request = (HttpServletRequest) req;
        log.info("当前请求方法" + request.getMethod());
        if ("OPTIONS".equals(request.getMethod())) {
            response.setStatus(HttpServletResponse.SC_OK);
            return;
        }
        chain.doFilter(req, res);
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

原因是如果需要往Header里面添加新的字段内容,需要在后端配置这个信息才行,这样后端才可以正常接收Header里面的数据。
这样,就可以正常访问后端数据了。
java跨域过滤器,笔记,java,前端,spring boot,跨域问题文章来源地址https://www.toymoban.com/news/detail-755919.html

到了这里,关于Java过滤器配置类导致跨域问题:Request header field token is not allowed by Access-Control-Allow-Headers in prefli的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【安全】 Java 过滤器 解决存储型xss攻击问题

    跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆,所以简称为XSS。 XSS是一种经常出现在web应用中的计算机安全漏洞 ,也是web中最主流的攻击方式。 XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些

    2024年02月08日
    浏览(53)
  • 【微服务技术二】Feign、Gateway(路由、过滤器、跨域)的初步认知

    之前远程调用使用RestTemplate,代码如下: 使用RestTemplate的缺陷: 代码可读性差,编程体验不统一(莫名的url路径) 参数复杂时的URL难以维护 Feign是一个声明式的http客户端,官方网址: https://github.com/OpenFeign/feign Feign替代RestTemplate 使用Feign的步骤: 1、引入依赖: 2、在消费者

    2024年02月12日
    浏览(33)
  • 微服务Gateway网关(自动定位/自定义过滤器/解决跨域)+nginx反向代理gateway集群

    目录 Gateway网关 1.0.为什么需要网关? 1.1.如何使用gateway网关 1.2.网关从注册中心拉取服务 1.3.gateway自动定位 1.4.gateway常见的断言 1.5.gateway内置的过滤器 1.6.自定义过滤器-全局过滤器 1.7.解决跨域问题 2.nginx反向代理gateway集群 2.1.配置文件 继  nacos注册中心+Ribbon负载均衡+完成

    2024年02月06日
    浏览(66)
  • Javaweb | 过滤器、配置、过滤器链、优先级

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 概念 过滤器(Filter)是处于客户端与服务器目标资源之间的一道过滤技术 用户的请求和响应都需要经过过滤器 过滤器作用 执行地位在Servlet之前,客户端发送请求是,会先经过Filter,再到达目标Servlet中;响应时,会根

    2023年04月17日
    浏览(50)
  • 【Java】SpringCloud Gateway自定义过滤器中获取ServerHttpRequest的body中的数据为NULL的问题

    这个情况出现在,我需要进行验证码的校验,因此用户的请求首先需要被验证码过滤器校验,而验证码过滤器不需要设定为全局过滤器,因此我就单纯的把它设定为了一个局部过滤器,代码如下 然后我进行请求的时候,json参数如下 然后请求经过解析后会发现,字符串居然是

    2024年02月09日
    浏览(51)
  • Java实现布隆过滤器

    背景: 为预防大量黑客故意发起非法的时间查询请求,造成缓存击穿,建议采用布隆过滤器的方法解决。布隆过滤器通过一个很长的二进制向量和一系列随机映射函数(哈希函数)来记录与识别某个数据是否在一个集合中。如果数据不在集合中,能被识别出来,不需要到数据

    2024年02月01日
    浏览(46)
  • [Java]过滤器(Filter)

    一、什么是过滤器 过滤器是Servlet的高级特性之一,是实现Filter接口的Java类! 过滤器的执行流程:   从上面的图我们可以发现,当浏览器发送请求给服务器的时候, 先执行过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。 过滤

    2024年02月11日
    浏览(42)
  • java过滤器(Filter)

    原文链接: java过滤器(Filter – 编程屋 目录 1 过滤器简介 2 Filter详细介绍 3 Filter的用法 3.1 用法1  3.2 用法2 filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器) 作用: 既可以对请求进行拦截,也可以对响应进行处理。 常见场景: 权限检

    2024年02月20日
    浏览(40)
  • Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在流中的(缓存中)获取一次就没有了,需要重新写回去。所以需要两个包装类分别继承HttpServletRequestWrapper 和 HttpServletResponseWrapper 对 r

    2024年02月15日
    浏览(39)
  • Java 过滤器 @WebFilter 详解

    @WebFilter 注解是JavaEE中的一种注解,用于标识一个类为过滤器(Filter)。过滤器用于对请求进行过滤和处理,可以在请求到达目标资源之前或之后执行一些操作。 使用**@WebFilter**注解可以将一个类声明为过滤器,并指定过滤器的名称、URL模式、Servlet名称等。 简化配置 :不再需要

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包