学习-SpringCloudZuul gateway转发静态资源问题
2019-04-15 14:28
801 查看
一、问题描述
使用SpringBoot开发微服务应用时,使用Zuul开发API gateway,进行鉴权和验证,第一次配置路由之后,加载到页面发现没有获取静态资源文件,如下:
[code]zuul.routes.testweb.path=/page/** zuul.routes.testweb.url=http://localhost:8080/page
二、解决方法
此问题主要针对添加了类或项目映射路径的情况,若只有基本路径,直接配置为地址加端口即可。参照网上搜索到的资源,找到一下方法,仅供参考:
1.对使用如下添加类级别的映射路径的
[code]@RequestMapping("/sys")
则添加静态资源路由,如下:
[code]#页面以及方法的路由 zuul.routes.testweb.path=/page/** zuul.routes.testweb.url=http://localhost:8080/sys #静态资源文件的路由 zuul.routes.test-res.path=/static/** zuul.routes.test-res.url=http://localhost:8080/
因为在这种情况下,静态资源还是相当于直接发布在8080端口,没有和类方法一起使用类映射路径,所以在页面上引用资源需要进行调整,如下(此方法在加载页面时,静态资源是经过第二次映射):
[code]<!-- 不经过网关,直接加载本地资源 --> <link rel="stylesheet" th:href="@{/css/bootstrap.css}" /> <!-- 经过网关时,加载资源服务上的资源 --> <link rel="stylesheet" th:href="@{/static/css/bootstrap.css}" />
2.对于使用在配置文件中添加项目路径的如下:
[code]#在properties文件中添加tomcat上下文路径 server.context-path=/sys #较高版本Springboot使用 server.servlet.context-path=/sys
只需要在网关中添加如下路由:
[code]#页面web方法以及静态资源的路由 zuul.routes.testweb.path=/page/** zuul.routes.testweb.url=http://localhost:8080/sys
在采用context-path配置时,静态资源和类方法访问路径都会被加上指定的映射路径/sys,所以可以将路由合并,也无需修改页面引用,但注意此时静态是发布在 IP地址:8080/sys 上的。
两种方式本质是一致,需要正常映射转换静态资源的发布路径
相关文章推荐
- SpringCloudzuul转发webapp静态资源读取问题
- springcloud项目网关升级:gateway替代zuul以及解决gateway跨域访问问题
- Spring Cloud 学习(六)路由请求转发和安全过滤之Zuul组件(F版)
- [Spring入门学习笔记][静态资源]
- springboot、springcloud之静态资源路径的配置
- 解决springboot项目打war 包docker包找不到resource 下的静态资源问题
- spring cloud gateway API zuul配置
- 微服务学习SpringCloud之Zuul路由网关
- Spring Boot 学习16--处理静态资源
- Spring Cloud (6) | spring cloud zuul 跨域问题No 'Access-Control-Allow-Origin' header
- spring cloud学习——Spring Cloud Netflix-zuul(三)
- Spring Cloud之搭建动态Zuul网关路由转发
- J2EE for SpringMVC 映射静态资源独Js不成功的问题解决
- Spring Boot无法访问css,js等静态资源的问题
- SpringBoot+SpringSecurity误拦截静态资源问题调研
- springboot静态资源加载路径问题
- spring cloud 整合 zuul 实现简单路由时 zuul No route found for uri 问题
- 记录关于springCloud 网关从zuul升级到gateway所遇到的问题
- springboot、springcloud之静态资源路径的配置
- 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问