nginx satoken 外网域名配置 cors

    // 注册 Sa-Token全局过滤器
    @Bean
    public SaReactorFilter getSaReactorFilter() {
        return new SaReactorFilter()
                // 拦截地址
                .addInclude("/**")
                //knife4j 文档不拦截
                .addExclude("/doc.html", "/webjars/**", "/swagger-resources")
                // 鉴权方法:每次访问进入
                .setAuth(obj -> {
                    SaRequest request = SaHolder.getRequest();
                    if (log.isDebugEnabled()) {
                        log.debug(request.getUrl());
                    }
                    // 登录校验 -- 拦截所有路由,开放登录接口
                    SaRouterStaff routerStaff = SaRouter.match("/**", "/auth/api/open/**", r -> StpUtil.checkLogin());
                    if (routerStaff.isHit) {
                       
                    }
                })
                // 异常处理方法:每次setAuth函数出现异常时进入
                .setError(e -> {
                    if (e instanceof NotLoginException) {
                        log.error("token失效!");
                    } else {
                        e.printStackTrace();
                        log.error("error!", e);
                    }
                    return Result.fail(e.getMessage());
                }) // 前置函数:在每次认证函数之前执行
                .setBeforeAuth(o -> {
                    this.configCross();
                });
    }


    /**
     * 配置跨域
     */
    private void configCross() {
        // ---------- 设置跨域响应头 ----------
        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", "*");

        // 如果是预检请求,则立即返回到前端
        SaRouter.match(SaHttpMethod.OPTIONS).free(r -> log.warn("--------OPTIONS预检请求,不做处理")).back();
    }



server {
    listen 80;
    #此处应配置  否则不存在的会跨域
    server_name www.xxxx.com xxxx.com;

    #应放开对options请求拦截
    if ($request_method !~ ^(GET|POST|OPTIONS)$) {
      return 403;
    }
  


  }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容