问题复现使用CloudFlareWorkers部署图床系统的时候,想使用EdgeOne加速Workers,但是直接使用EdgeOne加速Workers给的域名会出现522的问题,我一开始以为和Vercle一样是回源HOST的问题,但实际上不是。
Workers是会检测域名的,如果域名没有托管到CF就是直接522
解决方案我发现可以使用一个托管在CF的域名作为中转,实现使用EO加速
给在CF托管的域名添加一个解析记录,值随便填写,但是一定要开启小云盾
添加Workers路由绑定要加速的Workers,注意是添加路由,不是在Workers里面直接绑定域名,一定要使用路由!!!
使用EdgeOne加速中转域名,注意回源方式HTTPS,回源地址和回源HOST要填写中转域名
其他解决方案,我在网上查的好像可以使用自定义主机名功能实现,但是我试了半天页面成功,感兴趣的可以研究一下,这个方案就是在试的过程中发现的。
总结CFWorkers会检测域名,但我们可以使用中转域名的方式绕过
必须要有一个托管在CF的域名,我用的eu.org 免费域名
至于会不会出现双层cdn的问题,我感觉不会,因为达到C ...
学习心得
未读给安知鱼主题的顶部导航栏添加猫毛玻璃效果并分段
具体效果可以看我的博客
必看
美化之前必须备份
我不是在最原始的主题上美化的,但大差不差
教程在 themes\anzhiyu\source\css\_layout\nav.styl直接覆盖
#sidebar #sidebar-menus .menus_items .menus_item_child margin: 0px list-style: none display: flex flex-direction: row flex-wrap: wrap#sidebar #sidebar-menus .menus_item_child li width: calc(50% - 8px) margin: 4px#sidebar #sidebar-menus .menus_item_child .site-page.child display: flex flex-direction: column align-items: center padding: 8px border-radius: 12px borde ...
需求分析我目前博客的图片都是存在博客的images文件夹里面的,每次在Typora写完文章要发布的时候都要重新整理图片路径太麻烦了,并且直接把图片都放到博客里面也不是长久之计。
我的需求
主打白嫖,能省就省
数据自主可控
有密码只能我一个人使用
在Typora里面添加图片可以自动上传到图床并替换好链接
有网页管理页面,我可以通过网页上传图片
方案我想到的方案是使用 Cloudflare R2 对象存储 +CloudflareWorkers + EdgeOne +PicList
Cloudflare R2 对象存储会给每个用户10G空间,用来存图片绰绰有余。
EdgeOne 用来缓存照片,可以有效降低 Cloudflare R2 的请求命中率。
CloudflareWorkers 用来构建网页,有现成的项目可以直接修改实现。
PicList软件用于在Typora里面添加图片自动上传到图床并替换好链接。
部署教程准备三个域名(三个子域名也可以,但主域名必须托管到CF),其中一个必须托管到CF(免费域名也可以)
一.准备CF存储桶并且配置加速链接第一步添加R2对象存储
存储桶名称:随 ...
适用场景:你手动修改了 node_modules 内部第三方包源码,重装依赖、换电脑迁移会丢失改动。
什么是 patch‑package直接修改 node_modules 只是临时效果,执行 npm install 就会被官方原版覆盖。 patch‑package 对比你修改前后代码,生成 patches/*.patch 补丁文件,提交进仓库;执行 npm install 自动把你的修改打回去,实现换电脑、重装依赖改动不丢失。
Hexo 博客迁移电脑不再复制庞大、容易出错的 node_modules。
一、旧电脑生成补丁步骤1、安装 patch‑package进入你的 Hexo 项目根目录(package.json所在文件夹)执行:
npm install patch-package --save-dev
2、修改 package.json scripts,增加 postinstall{ "name": "hexo-site", "version": "0.0.0", " ...
在修复博客欢迎卡片api接口的时候,想使用腾讯地图的接口,但是直接使用会出现跨域问题,搭建中转又太麻烦,在网上找到了一个很老的技术JSONP,完全符合我的需求。
JSONP(JSON with Padding)是一种非常经典、通用的前端跨域“黑客技巧”(Hack)。
被逼出来的方案:同源策略与漏洞浏览器有一个铁律叫同源策略 (Same-Origin Policy):如果两个页面的域名、协议或端口不同,前端直接用 fetch 或 AJAX 去请求对方的数据,浏览器就会报错拦截(也就是我们常说的 CORS 跨域报错)。
但在早期,前端工程师们发现了一个“官方漏洞”: 虽然 AJAX 被限制了,但是 HTML 里带有 src 属性的标签是不受跨域限制的!
你可以毫无阻碍地加载别人域名的图片:<img src="别人家的.jpg">
也可以加载别人域名的 CSS:<link href="别人家的.css">
最关键的是,你可以加载并执行别人域名的 JS 脚本:<script src="别人家的.js" ...
问题复现使用Vercel部署的Twikoo并且启用了EdgeOne加速,开启了海内外分流,出现无法获取用户真实IP的问题,获取到的是CDN的IP。
问题根源Vercel Hobby/Pro 会过滤、重写外部传入的 HTTP 头:
EO‑Connecting‑IP:EO 内置头,Vercel 直接丢弃
X‑Forwarded‑For:Vercel 会重写覆盖,只能拿到 EO 节点 IP,所以 TwikooIP 属地错误
解决方案EdgeOne 控制台配置使用「真实客户端 IP 头部」:
开关打开
头部名称:Eo‑Client‑Ip
保存,等待 2‑5 分钟配置全网生效
EO 会自动把访客真实 IP 填入这个自定义头部,不需要手动写变量。
Vercel‑Twikoo 配置
环境变量 TWIKOO_IP_HEADERS 值(严格复制,小写 + 合法 JSON)
["headers.eo-client-ip"]
保存环境变量后必须点 Redeploy 重新部署 Vercel 项目,只保存不部署不会生效。
场景:分流
架构:
国内用户 → EdgeOne ...
学习心得
未读现象复现绑定 GitHub 仓库,推送到page分支(非主分支),EdgeOne 不会自动触发部署;更新仓库内容,EdgeOne不会自动部署。
注意在项目设置中正确配置域名所对应的分支
修复方案方案 1:原生 Git 集成(Webhook 方式,优先)
EdgeOne 断开 Git 关联
GitHub 应用EdgeOne Makers授权,确保该仓库拥有权限
EdgeOne 重新绑定仓库,生产分支指定page,开启自动部署
确认 GitHub 仓库出现 EdgeOne Webhook
push 代码到page分支,观察Recent Deliveries和 EdgeOne 部署列表
方案 2:兜底方案(原生 Webhook 持续异常时使用)绕过 GitHub 仓库 Webhook,使用部署钩子 + GitHub Action
EdgeOne 项目设置 → 部署钩子,创建钩子,复制 POST 地址
在仓库新建.github/workflows/edgeone-deploy.yml,监听page分支 push,调用该 POST 地址触发部署。
由 GitHub Action 主动 ...
今天在备份博客的时候遇到了一个问题,主题目录无法提交到github仓库,最终发现是git仓库嵌套问题
什么是 Git 仓库嵌套?一个 git 仓库里面,放了另一个完整 git 仓库。 也就是父仓库文件夹里面,某个子文件夹内部藏了一个 .git 文件夹。
你的主仓库(父git,有/.git)└── themes/anzhiyu ← 这个文件夹里面又有一个 /.git
这就是仓库嵌套。父 git 会把这个子文件夹识别成一个特殊的 git 指针,不会读取子文件夹里面任何文件。
怎么产生的?
git clone 地址 themes/anzhiyu clone 下来的项目自带内部.git
复制粘贴另一个 git 项目的整个文件夹过来,没删掉里面的.git
重点:哪怕你后来把子文件夹内部的 .git 删除了,父 git 的索引缓存还会记住它曾经是嵌套仓库,问题依旧存在!GitHub 显示蓝色箭头文件夹。
现象
本地文件全都在,磁盘上看得见;
git add 子文件夹,执行后 git commit → nothing to commit, working tree clean,提交 ...
学习心得
未读Java 反射 Reflection一、什么是反射反射机制:程序运行期间,可以获取类的完整信息、操作对象(构造方法、成员变量、成员方法)。
正常正向调用:new 对象() → 编译期确定类型
反射逆向操作:运行期才解析类信息,动态创建对象、调用方法。
包:java.lang.reflect.*;入口:Class类
二、反射核心作用
运行时获取类名、父类、接口、属性、方法、构造器
运行时动态创建类实例
运行时调用任意对象的方法、读写成员变量(包括私有 private)
主流框架底层原理:Spring IoC、MyBatis、注解、JUnit 都大量使用反射
三、获取 Class 对象的 4 种方式class Student{}public class GetClassDemo { public static void main(String[] args) throws ClassNotFoundException { //方式1:类名.class 【推荐,不会创建对象】 Class<Student&g ...
学习心得
未读Scanner 类Scanner 是 java.util 包下的工具类,用来读取控制台输入、读取文件、字符串数据,最常用于接收键盘输入。
需要导包:import java.util.Scanner;
1. 基本使用import java.util.Scanner;public class Test { public static void main(String[] args) { // 1. 创建Scanner对象,接收键盘输入 Scanner sc = new Scanner(System.in); System.out.print("请输入一个整数:"); int num = sc.nextInt(); // 读取int整数 System.out.println("你输入的数字:" + num); sc.close(); // 关闭扫描器,释放资源 }}
2. 常用方法
方法
作用
n ...









