gateway Strict-origin-when-cross-origin跨域问题解决 | 少将全栈
  • 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

gateway Strict-origin-when-cross-origin跨域问题解决

Java admin 2年前 (2022-07-19) 4172次浏览 已收录 扫描二维码

gateway跨域问题有个坑,跨域只允许配置一次,不然就会失效。
gateway配置了跨域,那么你的security就不需要在配置跨域了,否则就会跨域失败。

SpringCloud整合Gateway+Jwt出现strict-origin-when-cross-origin跨域报错
问题详情:
后端接口通过网关可以访问成功,前端报接口跨域问题
console打印如下:
gateway Strict-origin-when-cross-origin跨域问题解决
解决原因:
这个问题的原因是在于服务器端设置了两次跨域,只需要设置一次就可以。
有可能是Nginx/Gateway设置了一次,服务端代码又设置了一次。
我的情况是这样的,服务端采用的是SpringCloud,在GateWay网关里面全局设置了跨域,但是在被调的那个微服务项目里还有个跨域设置,导致前台在访问服务端的时候服务端一共跨域了两次,所以出现了这个问题。
解决方法:
只需要将微服务项目的那个删掉即可
Gateway框架配置cors的方法

在application.yml中配置以下信息即可:

spring:
  cloud:
    gateway:
      globalcors: # 全局的跨域处理
        add-to-simple-url-handler-mapping: true # 因为ajax发起者会通过options请求来向服务器询问是否允许跨域,所以需要设置为true来解决options请求被拦截问题
        corsConfigurations:
          '[/**]':
            allowedOrigins: # 允许哪些网站的跨域请求 
              - "http://localhost:8090"
            allowedMethods: # 允许的跨域ajax的请求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允许在请求中携带的头信息
            allowCredentials: true # 是否允许携带cookie
            maxAge: 360000 # 这次跨域检测的有效期,即一定时间内就不需要重复询问是否允许跨域了,直接请求即可。

这边配置如下:

gateway:
  httpclient:
    connect-timeout: 5000 #设置全局链接超时时间,单位毫秒
    response-timeout: 50000 #设置全局响应超时时间
  discovery:
    locator:
      enabled: true # 开启从注册中心动态创建路由的功能
      lower-case-service-id: true #设置获取服务可以通过小写形式
  enabled: true
  globalcors: # 跨域设置
    corsConfigurations:
      '[/**]':
        allowedOrigins: "*"
        allowedMethods: "*"
        allowedHeaders: "*"

 

版权声明:本文为CSDN博主「②⑦丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36971119/article/details/121401468
喜欢 (3)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。