解决Thymeleaf通过网关路由静态资源访问404的问题

263 阅读2分钟

前言:由于请求页面需要通过网关路由,所以我们请求的端口号都是网关的端口号

一、问题的原因

       由于请求的是网关的地址,所以Themeleaf会根据网关的地址去找相应位置的静态资源;

例如:

  • 请求网关:localhost:80/page/login.html

  • Thymeleaf会在localhost:80/static/js/...目录下寻找静态资源

  • 请求页面:localhost:8080/page/login.html

  • Thymeleaf会在localhost:8080/static/js/...目录下寻找静态资源

      由此得知,通过网关路由的页面可以正常路由,但是静态资源却是在网关的位置找静态资源,所以会报错404找不到。

二、解决办法

      第一个解决办法(不推荐):如果项目不是很大可以直接在网关创建Resources文件夹,将路由页面所需要的静态资源存到网关中

      第二个解决办法(推荐):在网关的配置文件中增加对于静态资源的路由**,**需要注意的是,如果设置了路由过滤器,还需要对静态资源进行放行处理。

#只路由页面
spring:
  application:
    name: gateway
  cloud:
    gateway:
      routes:
        - id: web
          uri: lb://web
          predicates:
            - Path=/page/**

#增加对于静态资源的路由
spring:
  application:
    name: gateway
  cloud:
    gateway:
      routes:
        - id: web
          uri: lb://web
          predicates:
            - Path=/page/**,/js/**,/css/**
#需要放行的url
login:
  urls:
    skipUrl:
      - /page/login.html
      - /user/login
      - /user/addUser
      - /js/**
      - /css/**

三、web架构

四、结尾

Thymeleaf静态资源的问题真的是有够烦人的,还有其他问题后面再补充了,相关资料有点难找,所以自己记录下来,免得以后忘了又要找很久。另外作为一个强迫症患者我忍这个东西很久了!!!

解决页面favicon.ico文件不存在提示404问题

//要么自己放上自己的个性图标,网上搜ico图片制作就可以了
//要么像我这样省事
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <link rel="shortcut icon" href="#"/>
</head>