halo-dev / halo

强大易用的开源建站工具。
https://www.halo.run
GNU General Public License v3.0
33.82k stars 9.66k forks source link

在2.20.x版本中, 静态资源也校验了登陆, 导致在将静态资源单独进入cdn后回源失败. #6908

Open rohow opened 3 hours ago

rohow commented 3 hours ago

System information

None

What is the project operation method?

Docker

What happened?

目前我的部署方式是通过nginx,将静态资源部分动态subs_filter替换为cdn的地址.

例如: 博客地址 https://blog.com, 而静态资源地址 https://static.cdn.com/blog

在之前版本中,静态资源不会校验登陆.所以这种部署方式一直没问题.

但升级到2.20.x后, 由于现在静态资源也校验登陆,直接302到登陆页面, 导致目前cdn回源失败.

是否可以继续将静态资源排除校验呢?

JohnNiang commented 2 hours ago

Hi @rohow , thank you for reaching out here!

目前,Halo 安全模块是默认过滤了部分静态资源的,请看下面的列表:

"/themes/{themeName}/assets/{*resourcePaths}",
"/plugins/{pluginName}/assets/**",
"/upload/**",
"/webjars/**",
"/js/**",
"/styles/**",
"/halo-tracker.js",
"/images/**"

如果你想要替换的路径是 /blog,目前暂时不支持。

建议提供更多的信息,否则我们也不知道为什么需要这样做。

/triage needs-information

rohow commented 1 hour ago

@JohnNiang 感谢回复~ 目前是uc 和 console中的静态资源返回了302.

请问这部分的静态资源是否可以也过滤出来呢?

我目前的场景是 博客域名(https://dev.cm) 在国内无法备案 但是又需要使用国内cdn(需要备案 但对于国内速度最优)

所以我将全部静态资源匹配到国内已备案的域名上 (https://static.fillcode.com) 并且使用路径做分发(eg: https://static.fillcode.com/dev-cm/)

目前我没有找到能够统一配置替换静态资源路径的功能的前提下 只能这么实现了... 这种配置在2.20.x之前的版本是一直生效的

JohnNiang commented 1 hour ago

感谢进一步反馈!

后续可以考虑在认证配置中排除以下两个路径规则: /console/assets/**/uc/assets/**

/assign /kind improvement /area core /milestone 2.20.x