gateway网关导致多重跨域问题The ‘Access-Control-Allow-Origin‘ header contains multiple values

这篇具有很好参考价值的文章主要介绍了gateway网关导致多重跨域问题The ‘Access-Control-Allow-Origin‘ header contains multiple values。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

F12控制台报错:Access to XMLHttpRequest at 'XXX from origin ' http://localhost:8001' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values ' http://localhost:8001, http://localhost:8001', but only one is allowed.

实际后台请求成功了,但是还是显示报错然后发现出现重复headers,标头只能一个。

gateway网关导致多重跨域问题The ‘Access-Control-Allow-Origin‘ header contains multiple values

解决方法

就是去除掉多次的跨域配置,只保留一次。比如我在网关配置了一个跨域,然后使用子项目时里面的config又配置有跨域,所以我们需要把子项目里的跨域配置注释掉只保留的网关的跨域配置。或者在微服务跨域配置中增加

spring:
  cloud:
    gateway:
      default-filters:
        - DedupeResponseHeader=Access-Control-Allow-Origin Access-Control-Allow-Credentials Vary, RETAIN_UNIQUE

security跨域配置:

gateway网关导致多重跨域问题The ‘Access-Control-Allow-Origin‘ header contains multiple values

gateway网关跨域配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.server.WebFilter;
import org.springframework.web.util.pattern.PathPatternParser;


/**
 * 跨域配置
 *
 * @author zc
 */
@Configuration
public class CorsConfig
{
    @Bean
    public WebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedMethod("*");
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        //允许携带cookie的地址进行跨域
        config.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new
                PathPatternParser());
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
}

总结微服务中解决跨域问题主要分为如下情况:

情况1:针对单个服务的跨域问题,增加允许跨域配置类即可。

如,前端vue+单业务微服务

情况2:有网关时,网关配置允许跨域,微服务不配置。微服务项目网关服务为Gateway,则要求所有请求统一走网关,无需给每个微服务都配置跨域,只需要给网关微服务gateway配置跨域即可。

如,前端vue+网关服务gateway+业务微服务

情况3:有网关时,网关配置允许跨域,微服务配置允许跨域。需要在网关的配置里加上重复请求头。配置DedupeResponseHeader=Vary Access-Control-Allow-Origin Access-Control-Allow-Credentials, RETAIN_UNIQUE。此时走不走网关,都没有跨域问题。

如,前端vue+网关服务gateway+业务微服务/认证授权微服务

情况4:网关不配置,微服务配置允许跨域。请求如果走网关,则会存在跨域问题。不走网关,直接访问微服务,没有跨域问题。

情况5:网关不配置,微服务不配置。走不走网关都会存在跨域问题。文章来源地址https://www.toymoban.com/news/detail-479856.html

到了这里,关于gateway网关导致多重跨域问题The ‘Access-Control-Allow-Origin‘ header contains multiple values的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource关于vue跨域问题 重复Access-Control-Allow-Origin

            浏览器为了安全考虑,有一个最基本的安全策略,即同源策略。         同源策略规定:浏览器在解析Ajax请求时,要求浏览器的路径与Ajax的请求的路径必须满足三个要求,即请求的协议、域名、端口号都相同,满足同源策略,可以访问服务器,否则,只要有一个不

    2024年02月06日
    浏览(45)
  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource关于vue跨域问题 重复Access-Control-Allow-Origin

            浏览器为了安全考虑,有一个最基本的安全策略,即同源策略。         同源策略规定:浏览器在解析Ajax请求时,要求浏览器的路径与Ajax的请求的路径必须满足三个要求,即请求的协议、域名、端口号都相同,满足同源策略,可以访问服务器,否则,只要有一个不

    2023年04月17日
    浏览(61)
  • No ‘Access-Control-Allow-Origin‘ header is present on the requested resource关于vue跨域问题

            浏览器为了安全考虑,有一个最基本的安全策略,即同源策略。         同源策略规定:浏览器在解析Ajax请求时,要求浏览器的路径与Ajax的请求的路径必须满足三个要求,即请求的协议、域名、端口号都相同,满足同源策略,可以访问服务器,否则,只要有一个不

    2024年02月08日
    浏览(43)
  • 【Spring Cloud】深入探索统一网关 Gateway 的搭建,断言工厂,过滤器工厂,全局过滤器以及跨域问题

    在微服务架构中,网关是至关重要的组件,具有多重职责,为整个系统提供了一系列关键功能。从下面的微服务结构图中,我们可以明确网关的几项主要作用: 微服务结构图: 请求过滤与安全: 用户的所有请求首先经过网关,这使得网关成为系统的第一道防线。通过对传入

    2024年02月07日
    浏览(57)
  • gateway网关、Springboot、Servlet跨域

    一,gateway网关跨域 二,springboot跨域 三,servlet跨域 注意如果传了自定义header,需要覆盖doOptions方法,因为传自定义header后浏览器在发起请求前会发送一个options请求(chrome的开发工具看不到options请求,edge浏览器可以看到),不覆盖doOptions可以在edge的开发工具中看到options的

    2024年02月11日
    浏览(30)
  • 网关 GateWay 的使用详解、路由、过滤器、跨域配置!

    SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是: 反向代理(请求的转发) 路由和负载均衡 身份认证和权限控制 对请求限流 1.2 相比于Zuul的优势: SpringCloudGateway基于Spring5中提供的WebFlux,是一种响应式编程的实现,性能更加优越。 Zuul的实现方式比较老式

    2024年02月07日
    浏览(60)
  • 网关 GateWay 的使用详解、路由、过滤器、跨域配置

    SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是: 反向代理(请求的转发) 路由和负载均衡 身份认证和权限控制 对请求限流 1.2 相比于Zuul的优势: SpringCloudGateway基于Spring5中提供的WebFlux,是一种响应式编程的实现,性能更加优越。 Zuul的实现方式比较老式

    2024年02月14日
    浏览(56)
  • 微服务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日
    浏览(69)
  • Access-Control-Allow-Origin跨域问题,使用Nginx配置来解决

    前提环境:在A服务器,调用B服务器的资源,报错出现找不到请求头Access-Control-Allow-Origin,输入跨域问题, 需要使用配置nginx来处理 例如:A服务器是liunx系统部署了一个java程序,B服务器是本地服务器,A服务器需要请求访问B服务器的资源,可以用nginx代理来请求到B服务器的资

    2024年02月06日
    浏览(43)
  • vue中解决ajax跨域问题(no “access-control-allow-origin”)

    跨域是是因为浏览器的同源策略限制,是浏览器的一种安全机制,服务端之间是不存在跨域的。 所谓同源指的是两个页面具有相同的协议、主机和端口,三者有任一不相同即会产生跨域。 常见的跨域解决方法有 cors 这个需要由后端在响应头上配置 jsonp 借助script中的标签src,

    2024年02月10日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包