492 字
2 分钟
Cloudflare Pages上的Hexo博客添加自定义响应头
2023-02-18
2023-02-08
无标签

在上一篇博文 配置响应头 提高网页安全性 让跑分达到A+! 中,我简单介绍了一些能够提高安全性的响应头,但众所周知,静态博客基本上都是白嫖托管在各大平台上的,例如GitHub PagesCloudflare Pages腾讯云ServerlessVercelHerokuNetlify等。

在这种托管平台上,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

Cloudflare Pages上的Hexo博客添加自定义响应头
https://blog.moraxyc.com/posts/cloudflare_pages_headers/
作者
Moraxyc
发布于
2023-02-18
许可协议
CC BY-NC-SA 4.0