当前位置 博文首页 > 文章内容

    FOUND_layman的博客:[网关异常处理]请求路径:/captchaImage,异常信息:404 NOT

    作者:shunshunshun18 栏目:未分类 时间:2021-10-27 20:19:22

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    今天用若依二开,在项目里添加了一个模块,启动系统的时候报错了。

    前台提示404 NOT FOUND,同时验证码无法显示。
    在这里插入图片描述
    这个问题,我一分钟之内就知道是哪儿的问题。

    原因是,我启动的ruoyi-ui是Vue版本,而我的后台服务器是Cloud版本。

    但是,还是想记录一下,顺便把Spring Cloud GateWay的相关知识,再巩固一遍。

    08:53:21.851 [reactor-http-nio-3] ERROR c.r.g.h.GatewayExceptionHandler - [handle,52] - [网关异常处理]请求路径:/captchaImage,异常信息:404 NOT_FOUND
    08:53:55.264 [reactor-http-nio-4] ERROR c.r.g.h.GatewayExceptionHandler - [handle,52] - [网关异常处理]请求路径:/captchaImage,异常信息:404 NOT_FOUND
    

    可以看到,是GatewayExceptionHandler 的第52行代码提示了这个错误。

    GatewayExceptionHandler.java

    package com.ruoyi.gateway.handler;
    
    import org.springframework.cloud.gateway.support.NotFoundException;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.annotation.Order;
    import org.springframework.http.server.reactive.ServerHttpResponse;
    import org.springframework.web.server.ResponseStatusException;
    import org.springframework.web.server.ServerWebExchange;
    import com.ruoyi.common.core.utils.ServletUtils;
    import reactor.core.publisher.Mono;
    
    /**
     * 网关统一异常处理
     */
    @Order(-1)
    @Configuration
    public class GatewayExceptionHandler implements ErrorWebExceptionHandler{
    
        private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class);
    
        @Override
        public Mono<Void> handle(ServerWebExchange exchange, Throwable ex){
        
            ServerHttpResponse response = exchange.getResponse();
    
            if (exchange.getResponse().isCommitted()){
                return Mono.error(ex);
            }
    
            String msg;
    
            if (ex instanceof NotFoundException){
                msg = "服务未找到";
            }
            else if (ex instanceof ResponseStatusException){
                ResponseStatusException responseStatusException = (ResponseStatusException) ex;
                msg = responseStatusException.getMessage();
            }
            else{
                msg = "内部服务器错误";
            }
    
            log.error("[网关异常处理]请求路径:{},异常信息:{}", exchange.getRequest().getPath(), ex.getMessage());
    
            return ServletUtils.webFluxResponseWriter(response, msg);
        }
    }
    

    不多说,看会学习笔记去。

    cs