Cloudflare Pages上的Hexo博客添加自定义响应头
在上一篇博文 配置响应头 提高网页安全性 让跑分达到A+! 中,我简单介绍了一些能够提高安全性的响应头,但众所周知,静态博客基本上都是白嫖托管在各大平台上的,例如GitHub Pages、Cloudflare Pages、腾讯云Serverless、Vercel、Heroku、Netlify等。
在这种托管平台上,Headers响应头配置必须依靠平台本身提供的功能,例如GitHub的没有Vercel的Vercel.json
、Netlify的自定义标头、Cloudflare Pages HeadersCloudflare Pages Headers
坑点
其他平台的自定义标头都是用gui或配置文件来定义的,而Cloudflare Pages与众不同,它要求设置一个_headers
文件位于生成的网页根目录下
hexo在生成网页时会将source目录下的文件同步复制到生成的网页根目录下,所以将这个文件放在source里就好
但这个下划线就是个问题了,在Hexo文档中,有这么一句话:
Hexo ignores hidden files and files or folders whose names are prefixed with _ (underscore) - except the _posts folder.
Hexo会忽略以下划线开头的文件或文件夹(除了_posts
)
那么该怎么强行让Hexo在生成时将source目录下的_headers
复制到站点根目录并跳过渲染?
解决
在skip_render
配置项中填入_headers
后,还需要使用include
将该文件包含在生成时需要复制到根目录的列表里面
文档内并没有提供这类用法,但这个issue验证了该方法的可行性
在_conifg.yml
中按照以下用法填入即可
跳过渲染
skip_render:
- '_headers'
强行包含
include:
- '_headers'
配置
这样就可以保证source目录下的_headers
将会生成于网站根目录下
那该怎么配置这个文件?
基本语法如下:
[url]
[name]: [value]
e.g.
/secure/page
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
/static/*
Access-Control-Allow-Origin: *
X-Robots-Tag: nosnippet
https://myproject.pages.dev/*
X-Robots-Tag: noindex
删除响应头:
/*.jpg
! Content-Security-Policy
更多详细内容请查看Cloudflare Pages Headers