0
点赞
收藏
分享

微信扫一扫

SpringCloud中Gateway提示OPTIONS请求跨域问题

菜头粿子园 2024-03-09 阅读 12

因为是新搭建的框架,所有组件也是用的标准组件,但在跟前端对接的时候,前端反馈说请求跨域了

我第一反应是配置文件没生效,谁改了配置文件

    gateway:
      # 全局跨域配置
      globalcors:
        cors-configurations:
          '[/**]':
            #allowedOrigins:
            # - "http://localhost:3333" #允许所有的域
            allowedOriginPatterns:
              - '*' #跨域处理 允许所有的域
            allowCredentials: true # 是否允许携带cookie
            allowedMethods: # 支持的方法
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders:
              - "*" # 允许在请求中携带的头信息

发现配置文件没问题,最近也没有人改配置相关的,然后我写了一个页面测试一下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
    <input type="button" value="点击确认" onclick="checkOn()">

    <script>
        function checkOn() {
            $.get('http://localhost:8000/api-user/user/get/1', function (data) {
                alert(data)
            });
        }
    </script>
</body>
</html>

请求正常,能正常访问
然后告诉前端我这边测试正常的,不存在跨域问题
前端说不行他那还是跨域,甩个403异常截图,仔细看了下发现是个OPTIONS请求
打开postman用OPTIONS请求试了下,还真的提示跨域,然后各种百度跨域问题,发现全部都不行

后面同事发现有一个配置加上去就好了

add-to-simple-url-handler-mapping: true
    gateway:
      # 全局跨域配置
      globalcors:
        add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
        cors-configurations:
          '[/**]':
            #allowedOrigins:
            # - "http://localhost:3333" #允许所有的域
            allowedOriginPatterns:
              - '*' #跨域处理 允许所有的域
            allowCredentials: true # 是否允许携带cookie
            allowedMethods: # 支持的方法
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders:
              - "*" # 允许在请求中携带的头信息

可以发现这个配置似乎与跨域没有关系,但是加上这个后真的就可以了

举报

相关推荐

0 条评论