• Spring cloud 微服务跨域问题


    前后端分离,后端网关路由到了正确微服务对应的控制器上,并且执行了,但是登陆页面没有跳转,并且显示跨域问题。有没有懂的可以帮忙解决一下

    img

    img

    img

    img

    • 阿里嘎多学长 2024-06-21 20:02
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      根据你提供的信息和文件,我将按照以下步骤来解决Spring Cloud微服务架构中的跨域问题:

      1. 检查全局CORS配置:在Spring Cloud Gateway中,CORS配置通常在application.yaml文件中定义。你需要确保全局CORS配置允许来自前端的请求。根据你提供的文件内容,我注意到以下配置:

        globalcors:
          cors-configurations:
            '[/**]':
              allowed-origins: "http://localhost:8080"
              allowed-methods:
                - GET
                - POST
                - PUT
                - DELETE
              allowed-headers: "*"
              allow-credentials: true
              max-age: 3600
        

        请确保allowed-origins包含了前端应用的域名或使用*来允许所有域。同时,allowed-methods应该包含所有需要的HTTP方法。

      2. 检查特定服务的CORS配置:如果全局配置无法满足需求,你可能需要在特定服务的配置中添加CORS设置。例如,如果UserController需要特定的CORS设置,你可以在对应的application.yaml文件中添加:

        userController:
          cors-configurations:
            '[/**]':
              allowed-origins: "http://your-frontend-domain"
              allowed-methods: "GET, POST, PUT, DELETE"
              allowed-headers: "Content-Type"
              allow-credentials: true
        
      3. 检查网关路由配置:确保网关的路由配置正确指向了相应的服务。根据你提供的文件,路由配置如下:

        gateway:
          routes:
            - id: user-service
              uri: lb://user-service
              predicates:
                - Path=/user/**
            - id: house-service
              uri: lb://house-service
              predicates:
                - Path=/house/**
            - id: paid-service
              uri: lb://paid-service
              predicates:
                - Path=/paid/**
        

        确保这些路由配置正确无误,并且服务名与Nacos注册中心中的服务名一致。

      4. 服务注册和发现:查看服务实例的启动日志,确认服务是否已正确注册到Nacos注册中心。你可以使用Nacos的控制台界面来检查服务列表。

      5. 检查服务实例日志:查看服务实例的日志,确认它们是否接收到了请求,并且没有发生错误。

      6. 浏览器控制台:检查浏览器的开发者工具中的网络请求,查看跨域错误具体是什么,这有助于定位问题。

      7. 参考链接:以下是一些可能对你有帮助的参考链接:

      如果你需要更具体的帮助,比如如何修改配置文件或者如何检查服务是否正确注册,请提供更多的信息或者具体的错误信息。

      展开全部

      2301_79621108 2024-06-21 20:03

      网关application.yaml中编写了对应的配置

      回复
    • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-21 20:02
      关注

      引自免费微信小程序:皆我百晓生

      从你描述的问题来看,你在使用Spring Cloud微服务时遇到了跨域问题,并且后端网关已经正确路由到了对应的微服务控制器,但前端页面没有跳转并显示跨域问题。跨域问题通常是由于浏览器的同源策略导致的,它限制了不同源之间的资源访问。下面是一些可能的解决方案:

      解决方案:

      1. 配置CORS(跨源资源共享)

      在你的微服务配置中(如application.ymlapplication.properties),你需要配置CORS策略来允许跨域请求。对于Spring Boot应用,你可以通过实现WebMvcConfigurer接口并覆写addCorsMappings方法来全局配置CORS。

      示例代码:

      @Configuration
      public class WebConfig implements WebMvcConfigurer {
          @Override
          public void addCorsMappings(CorsRegistry registry) {
              registry.addMapping("/**") // 允许所有路径的跨域请求
                  .allowedOrigins("*") // 允许所有来源
                  .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许请求方法
                  .allowCredentials(true) // 允许携带凭证
                  .maxAge(3600); // 缓存时间
          }
      }
      

      2. 使用Spring Cloud Gateway进行全局配置CORS

      如果你使用的是Spring Cloud Gateway作为API网关,你可以在application.yml中配置全局CORS策略。

      示例配置:

      spring:
        cloud:
          gateway:
            globalcors:
              cors-configurations:
                '[/**]': # 允许所有路径的跨域请求
                  allowedOrigins: "*“ # 允许所有来源访问
                  allowedMethods: # 允许请求的方法,如GET, POST等
                  - GET
                  - POST
                  ...
                  allowCredentials: true # 是否允许携带凭证
                  maxAge: 3600 # 缓存时间,单位为秒
      

      3. 检查后端服务是否正确响应前端请求并设置正确的响应头

      确保你的后端服务在处理请求时设置了正确的CORS响应头,如Access-Control-Allow-Origin。如果没有正确设置,浏览器可能会阻止跨域请求。检查你的后端代码以确保正确设置了这些响应头。

      注意:

      • 确保你的微服务之间通信时使用的端口和地址是正确的,并且服务间可以相互访问。有时候端口配置错误或网络问题也可能导致请求无法正确路由。
      • 检查你的日志输出,看是否有任何错误或警告信息,这可能会帮助你找到问题的根源。如果有可能的话,分享更多的日志信息可能会更有帮助。
      • 确保你的前端页面和后端服务都运行正常,并且正确配置了跨域相关的设置。如果问题依然存在,可能需要进一步调试和分析代码以找到问题的根源。

      展开全部

      2301_79621108 2024-06-21 20:03

      路由到了,并且执行成功了

      回复
  • 相关阅读:
    node_modules/.bin/vue-cli-service: Permission denied
    postgres字符串转数字
    前端 - Map对象详解
    阿里大数据面试题集合:Hadoop+HBase+Spark+Zookeeper
    欧科云链研究院:仰传统机构之“鼻息”,RWA的关键不在于Web3技术
    【目标检测】RCNN算法实现
    【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
    VSCode中打开md文件的智能提示
    使用多线程完成两个文件的拷贝,第一个线程拷贝前一半,第二个线程拷贝后一半,主线程回收两个线程的资源
    VIRTIO-SCSI代码分析(2)VIRTIO 驱动分析
  • 原文地址:https://ask.csdn.net/questions/8122339