咱们为了解决跨域问题
首先咱们配置好了Vue前端页面,让全部的请求都经过网关进行访问
全部的应用都经过gateway去访问。前端
1将gateWay配置到nacos中去。java
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.application.name=gulimail-gateway server.port=88
2.配置微服务到Nacos中去mysql
2.1. mail-productweb
spring: datasource: username: root password: root url: jdbc:mysql://47.96.156.168:3310/gulimail_pms driver-class-name: com.mysql.cj.jdbc.Driver cloud: nacos: discovery: server-addr: 127.0.0.1:8848 #Nacos的地址 mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: id-type: auto #使数据库自增 server: port: 9130
bootstrap中配置spring
spring.application.name=mail-product #nacos中显示的名字 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=051a5aa4-dd5b-4513-8639-52d4f76d38e8
2.2 renren-fast
配置相同:sql
配置好以后nacos中就会显示:
数据库
配置完以后咱们就能够经过Nacos和gateway去进行微服务之间的访问和跨域。bootstrap
1.首先咱们有一个前端页面
api
因为最初时咱们的配置咱们首先会访问到网关。跨域
spring: cloud: gateway: routes: # - id: test_route # uri: https://www.baidu.com # predicates: # - Query=url,baidu # # - id: qq_route # uri: https://www.qq.com # predicates: # - Query=url,qq - id: product_route #名字惟一便可 uri: lb://mail-product #要去的地方,这里必定要和nacos中的同样,即本身再product微服务中设置的application name同样没不然访问会出现403错误 predicates: - Path=/api/product/** filters: - RewritePath=/api/(?<segment>.*),/$\{segment} - id: admin_route uri: lb://renren-fast predicates: - Path=/api/** filters: - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
接下来为了跨域咱们配置了一个GulimailCorsConfiguration,解决跨域问题。
@Configuration public class GulimailCorsConfiguration implements WebMvcConfigurer { @Bean public CorsWebFilter corsWebFilter(){ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); /** * p配置跨域 */ corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.setAllowCredentials(true); source.registerCorsConfiguration("/**",corsConfiguration); return new CorsWebFilter(source); }
遇到了503问题
当时解决的时候花了大概有两天的时间,就是不知道怎么解决,当时快要崩溃了。最后发现这两个地方配置必定不能有问题。
1.product的application配置文件中命名
spring.application.name=mail-product spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=051a5aa4-dd5b-4513-8639-52d4f76d38e8
2.gateway去访问也是根据这个名字去的
3.这是gateway的配置文件,里面的uri就是要访问的微服务,必定要和上面的同样。
spring: cloud: gateway: routes: # - id: test_route # uri: https://www.baidu.com # predicates: # - Query=url,baidu # # - id: qq_route # uri: https://www.qq.com # predicates: # - Query=url,qq - id: product_route #名字惟一便可 uri: lb://mail-product #要去的地方 predicates: - Path=/api/product/** filters: - RewritePath=/api/(?<segment>.*),/$\{segment} - id: admin_route uri: lb://renren-fast predicates: - Path=/api/** filters: - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment} ## 前端项目,/api ## http://localhost:88/api/captcha.jpg http://localhost:8080/renren-fast/captcha.jpg ## http://localhost:88/api/product/category/list/tree http://localhost:10000/product/category/list/tree
只要这三个地方和跨域解决了,就没问题了。