在
SaTokenConfigure.java
中设置响应头即可
/**
* [Sa-Token 权限认证] 配置类
*/
@Configuration
public class SaTokenConfigure {
/**
* 注册 [sa-token全局过滤器]
*/
@Bean
public SaServletFilter getSaServletFilter() {
return new SaServletFilter()
.addInclude("/**").addExclude("/favicon.ico")
.setAuth(r -> {
// System.out.println("---------- sa全局认证");
})
.setError(e -> {
// System.out.println("---------- sa全局异常 ");
return AjaxJson.getError(e.getMessage());
})
// 前置函数:在每次认证函数之前执行
.setBeforeAuth(r -> {
// ---------- 设置跨域响应头 ----------
SaHolder.getResponse()
// 允许指定域访问跨域资源
.setHeader("Access-Control-Allow-Origin", "*")
// 允许所有请求方式
.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
// 有效时间
.setHeader("Access-Control-Max-Age", "3600")
// 允许的header参数
.setHeader("Access-Control-Allow-Headers", "x-requested-with,satoken");
// 如果是预检请求,直接返回
if ("OPTIONS".equals(SaHolder.getRequest().getMethod())) {
System.out.println("=======================浏览器发来了OPTIONS预检请求==========");
SaRouter.back();
}
})
;
}
}
WebFlux 环境同理,只不过把
SaServletFilter
更换为
SaReactorFilter
,其它保持不变