Cloudflare Workers
// 基本 Worker——拦截并修改响应
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
// A/B 测试路由
if (url.pathname === '/') {
const group = Math.random() < 0.5 ? 'a' : 'b';
url.pathname = `/variants/${group}`;
return fetch(url.toString(), request);
}
// 为所有响应添加安全头
const response = await fetch(request);
const newHeaders = new Headers(response.headers);
newHeaders.set('X-Frame-Options', 'DENY');
newHeaders.set('X-Content-Type-Options', 'nosniff');
return new Response(response.body, {
status: response.status,
headers: newHeaders
});
}
};
// KV 存储
const value = await env.MY_KV.get("key");
await env.MY_KV.put("key", "value", { expirationTtl: 3600 });