Solon

G、跨域处理

</> markdown

Solon 的跨域处理,由 solon.web.cors 插件提供支持。在 solon-api 快速集成开发包内已包含。主要有三种使用方式(以下只是示例,具体配置按需而定)。

1、加在控制器上,或方法上

@CrossOrigin(origins = "*")
@Controller
public class Demo1Controller {
    @Mapping("/hello")
    public String hello() {
        return "hello";
    }
}

@Controller
public class Demo2Controller {
    @CrossOrigin(origins = "*")
    @Mapping("/hello")
    public String hello() {
        return "hello";
    }
}

2、加在控制器基类

@CrossOrigin(origins = "*")
public class BaseController {
    
}

@Controller
public class Demo3Controller extends BaseController{
    @Mapping("/hello")
    public String hello() {
        return "hello";
    }
}

3、全局加在应用上

public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            //例:或者:增加全局处理(用过滤器模式)
            app.filter(-1, new CrossFilter().allowedOrigins("*")); //加-1 优先级更高
            
            //例:或者:增加全局处理(用过路由过滤器模式)
            app.routerInterceptor(-1, new CrossInterceptor().allowedOrigins("*")); //加-1 优先级更高
        
            //例:或者:增加全局处理(用处理链模式)
            app.before(new CrossHandler().allowedOrigins("*"));

            //例:或者:增某段路径的处理
            app.before("/user/**", new CrossHandler().allowedOrigins("*"));
        });
    }
}