解决 hexo 主题无法显示使用相对路径的图床图片

本文最后更新于:2024年10月26日 晚上

解决 hexo 主题无法显示使用相对路径的图床图片

问题情况

本地预览查看明明使用图床的图片缺无法正常显示,报 403 问题,显示如下

image-20240626004028362

原因

http 请求体的 header 中有一个 referrer 字段,用来表示发起 http 请求的源地址信息,这个 referrer 信息是可以省略但是不可修改的,只能设置是否带上这个 referrer 信息,而不能定制 referrer 里面的值。

服务器端在拿到这个 referrer 值后就可以进行相关的处理,比如图片资源,可以通过 referrer 值判断请求是否来自本站,若不是则返回 403 或者重定向返回其他信息,从而实现图片的防盗链。上面出现 403 就是因为,请求的是别人服务器上的资源,但把自己的 referrer 信息带过去了,被对方服务器拦截返回了 403。

解决

前端可以通过 meta 来设置 referrer policy (来源策略),具体参考这里。浏览器中 referrer 默认的值是 no-referrer-when-downgrade,就是除了降级请求的情况以外都会带上 referrer 信息。降级请求是指 https 协议的地址去请求 http 协议,所以 403 的情况可以将请求的图片地址换成 http 协议,这样降级请求也不会带上 referrer。另一种推荐的方法是把 referrer 设置成 no-referrer,这样发送请求不会带上 referrer 信息,对方服务器也就无法拦截。

由于我个人使用的主题为 fluid,暂未找到可以直接修改的配置文件进行添加配置项配置 meta,所以采用的是每次写 md 文档时,在开头加上

1
<meta name="referrer" content="no-referrer" />

无需额外设置,如果使用的是 typora 会直接识别

如果你的主题可以找到配置文件进行 meta 项的添加修改,可以加上下面这句

1
meta(name="referrer" content="no-referrer")

最后别忘了使用 hexo g 重新生成一下,确认可行之后使用 hexo d 同步即可


解决 hexo 主题无法显示使用相对路径的图床图片
https://4rozen.github.io/archives/notes/55208.html
作者
4rozeN
发布于
2023年3月25日
许可协议