前言:由于请求页面需要通过网关路由,所以我们请求的端口号都是网关的端口号
一、问题的原因
由于请求的是网关的地址,所以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>