springcloud-gateway升级版本allowedOrigins要改allowedOriginPatterns

前言

报错:

java.lang.IllegalArgumentException: When allowCredentials is true,

allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin"

response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.

原因:springboot升级2.6.0后所出现的问题

解决方法:将.allowedOrigins 替换成. allowedOriginPatterns 即可。

如下图:
在这里插入图片描述

ps:这是2.3时代的配置,现在不叫这个了,要用:

在这里插入图片描述

### CORS配置中`Access-Control-Max-Age`的作用 `Access-Control-Max-Age`这个响应头表明预检请求(preflight request)的结果能被缓存的时间长度,在这段时间内,浏览器不会再次发起相同的预检请求[^2]。 当涉及到复杂的HTTP请求时,比如带有自定义头部或特定类型的HTTP方法(如PUT、DELETE),浏览器会先发送一个OPTIONS请求作为预检请求给服务器验证是否有权限执行实际的操作。如果每次这样的操作都需要向服务器询问一次,则效率低下;而通过设定合理的`Access-Control-Max-Age`值可以让这些重复性的验证过程减少很多次网络往返时间,提高性能和用户体验。 ### `Access-Control-Max-Age`的设置方法 #### Spring框架中的设置示例 在Spring应用程序里可以通过多种方式来指定`Access-Control-Max-Age`参数: 1. **基于Java Config的方式** ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("POST", "GET", "OPTIONS") .allowedHeaders("*") .allowCredentials(false) .maxAge(3600); // 单位为秒,这里设置了1小时的最大年龄 } } ``` 这段代码展示了如何利用`WebMvcConfigurer`接口来自定义全局CORS策略,并指定了最大有效期为一小时[^3]。 2. **基于YAML文件配置** 对于采用Spring Boot的应用程序来说,也可以直接修application.yml或者application.properties文件来进行更简单的配置: ```yaml spring: mvc: pathmatch: matching-strategy: ant_path_matcher application: name: example-app cloud: nacos: discovery: server-addr: localhost:8848 gateway: globalcors: cors-configurations: '[/**]': allowedOriginPatterns: "*" allowedHeaders: "*" allowedMethods: "*" maxAge: 36000 # 单位为秒,此处设为了10小时 ``` 此段配置同样实现了对所有路径开放跨域访问的功能,并且将`Access-Control-Max-Age`设置成了较长的时间间隔以优化频繁发生的预检请求处理流程[^4]。 需要注意的是,虽然较大的`Access-Control-Max-Age`能够有效降低预检次数从而提升应用的整体表现力,但也意味着一旦服务端更了某些与安全有关的重要属性之后可能无法立即生效直到旧有的缓存过期为止。因此建议开发者们根据实际情况合理调整该数值大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值