Cloudflare Pages上的Hexo博客添加自定义响应头

本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。

在上一篇博文 配置响应头 提高网页安全性 让跑分达到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

本文作者:Moraxyc

本文链接: https://blog.moraxyc.com/post/cadc4eb2/

文章使用 CC BY-NC-SA 4.0 协议进行许可,使用时请遵守知识共享协议。

访问本站,即表明您同意本站免责条款

评论