个人随笔
目录
二十八、springCloudAlibaba-gateway跨域请求处理
2023-11-15 21:33:02

我们在二十四、springCloudAlibaba-gateway整合nacos搭建了gateway的网关案例,在此基础上,来试下跨域请求处理。

1、跨域问题

正常我们ajax请求某个域名,若是页面所在域名跟请求的域名不一致,且请求的方法未开启跨域访问,则会报错,比如这里有一个页面

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

  1. ...
  2. <button onclick="add()">下单</button>
  3. ...
  4. function add(){
  5. $.ajax({
  6. url:'http://localhost:8088/order-service/order/add',
  7. data:{},
  8. type:"GET",
  9. error: function() {
  10. alert("网络异常,请重试");
  11. },
  12. success:function(data){
  13. alert(data);
  14. }
  15. });
  16. }

我们用IDEA带的工具打开这个页面(就不搞nginx了)

启动网关和order服务,点击服务

然后我们加上跨域试试!

2、gateway提供了两种方式

配置文件

  1. gateway:
  2. #路由规则
  3. routes:
  4. - id: order_route # 路由的唯一标识
  5. uri: lb://order-service #需要转发的地址.lb本地负载均衡策略
  6. #断言规则 用于路由规则的匹配
  7. predicates:
  8. - Path=/order-service/**
  9. #- Query=green,hel.
  10. #- MyCustomize=test
  11. #- After=2023-11-13T21:05:39.811+08:00[Asia/Shanghai]
  12. #匹配请求http://localhost:8088/order-service/order/add
  13. #过滤器 用于过滤请求
  14. filters:
  15. - StripPrefix=1 #转发之前去掉第一层路径
  16. - AddRequestHeader=X-Request-red, blue
  17. - AddRequestParameter=red, blue
  18. - MyCustomize=from,suibibk.com
  19. #http://localhost:8010/order/add
  20. #- id: stock_route
  21. globalcors:
  22. cors-configurations:
  23. '[/**]': #允许跨域访问的资源
  24. allowedOrigins: "*" #跨域来源
  25. allowedMethods:
  26. - GET
  27. - POST

只需要加上配置

  1. globalcors:
  2. cors-configurations:
  3. '[/**]': #允许跨域访问的资源
  4. allowedOrigins: "*" #跨域来源
  5. allowedMethods:
  6. - GET
  7. - POST

就可以解决跨域了

配置类方式

  1. package com.suibibk.springCloud.gateway;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.web.cors.CorsConfiguration;
  5. import org.springframework.web.cors.reactive.CorsWebFilter;
  6. import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
  7. import org.springframework.web.util.pattern.PathPatternParser;
  8. @Configuration
  9. public class CorsConfig {
  10. @Bean
  11. public CorsWebFilter corsWebFilter(){
  12. CorsConfiguration config = new CorsConfiguration();
  13. config.addAllowedHeader("*");//允许的请求头参数
  14. config.addAllowedMethod("*");//允许的方法
  15. config.addAllowedOrigin("*");//允许的来源
  16. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
  17. source.registerCorsConfiguration("/**",config);
  18. return new CorsWebFilter(source);
  19. }
  20. }

这里要记得引用的类所在包为reactive

上面两种方法任选一种都可以,然后我们再试试

就正常了

ok!

 141

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2