Halo利用iframe引用实现隐性URL解析
使用Halo的朋友们可能会因为各种原因需要使用Cloudflare等来实现链接的隐性转发,避免记录端口而使用域名直接访问。在用高版本进行部署的时候halo默认不支持外源网站使用Iframe引用你的博客。
这个时候你的隐性链接访问halo会直接显示被转发的链接已拒绝访问。
通过Github社区了解到,这个功能如果一切正常应该会放在2.4版本的halo中去实现,其实早前的halo版本是支持这个功能的,但开发者们基于安全的考虑作了调整。
目前如果我们要实现这个功能的话,可以在halo的配置文件中去增加一段代码,以开启这个功能。
代码如下:
security:
frame-options:
disabled: true
mode: sameorigin
这段代码需要增加到application.yaml文件中,在halo: 这段代码行之后。
如果你使用docker desktop进行安装,以下是增加代码的步骤:
首先,在Windows中按住 图标键 +x 唤出菜单,点击如下选项:
然后依次输入如下代码:
docker ps -a ,查看所有的容器,找到halo的容器名称,默认应该为halo。
docker exec -it halo ls /usr/local/ 检查对应的容器文件结构
docker exec -it halo find / -name "application.yaml" 查找 application.yaml 文件
docker cp :/application/BOOT-INF/classes/application.yaml . 复制文件到宿主机
这时,这个yaml文件应该位于你的C盘当前用户文件夹下,例如C:\Users\example
你需要打开文件管理器,找到这个文件,使用笔记本打开并编辑里面的内容,增加上面的代码,然后保存。
这个代码粘贴的位置应该在分割线中间位置(注意不要粘贴这个分割线,仅为示意):
cache:
type: caffeine
caffeine:
spec: expireAfterAccess=1h, maximumSize=10000
halo:
work-dir: ${user.home}/.halo2
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
————————————————————————————————————————————————————————————————————————————
security:
frame-options:
disabled: true
mode: sameorigin
————————————————————————————————————————————————————————————————————————————
springdoc:
api-docs:
enabled: false
writer-with-order-by-keys: true
logging:
file:
name: ${halo.work-dir}/logs/halo.log
logback:
rollingpolicy:
max-file-size: 10MB
total-size-cap: 1GB
max-history: 0
粘贴完成后,依次运行如下代码:
docker cp ./application.yaml halo:/application/BOOT-INF/classes/ 将修改后的文件复制回容器
docker restart halo 重启容器
静待容器重启成功,然后通过隐性链接检查,你的博客应该可以直接通过域名访问了,而不是显示域名拒绝了访问。
——————————
2024年12月6日 更新:
如果以上方法增加后无效,需要同步在Nginx配置文件中的halo配置中增加 add_header Content-Security-Policy "frame-ancestors 'self' xxx;"代码,配置如下:
# 为 xxxxx 配置反向代理 halo
server {
listen xxxx;
server_name xxxx;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Content-Security-Policy "frame-ancestors 'self' https://nowy.cn;";#此处链接为你实际想用来访问的链接。
}
}