Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/snippets/patterns.md
1# Snippets Patterns23## Security Headers45```javascript6export default {7async fetch(request) {8const response = await fetch(request);9const newResponse = new Response(response.body, response);10newResponse.headers.set("X-Frame-Options", "DENY");11newResponse.headers.set("X-Content-Type-Options", "nosniff");12newResponse.headers.delete("X-Powered-By");13return newResponse;14}15}16```1718**Rule:** `true` (all requests)1920## Geo-Based Routing2122```javascript23export default {24async fetch(request) {25const country = request.cf.country;26if (["GB", "DE", "FR"].includes(country)) {27const url = new URL(request.url);28url.hostname = url.hostname.replace(".com", ".eu");29return Response.redirect(url.toString(), 302);30}31return fetch(request);32}33}34```3536## A/B Testing3738```javascript39export default {40async fetch(request) {41const cookies = request.headers.get("Cookie") || "";42let variant = cookies.match(/ab_test=([AB])/)?.[1] || (Math.random() < 0.5 ? "A" : "B");4344const req = new Request(request);45req.headers.set("X-Variant", variant);46const response = await fetch(req);4748if (!cookies.includes("ab_test=")) {49const newResponse = new Response(response.body, response);50newResponse.headers.append("Set-Cookie", `ab_test=${variant}; Path=/; Secure`);51return newResponse;52}53return response;54}55}56```5758## Bot Detection5960```javascript61export default {62async fetch(request) {63const botScore = request.cf.botManagement?.score;64if (botScore && botScore < 30) return new Response("Denied", { status: 403 });65return fetch(request);66}67}68```6970**Requires:** Bot Management plan7172## API Auth Header Injection7374```javascript75export default {76async fetch(request) {77if (new URL(request.url).pathname.startsWith("/api/")) {78const req = new Request(request);79req.headers.set("X-Internal-Auth", "secret_token");80req.headers.delete("Authorization");81return fetch(req);82}83return fetch(request);84}85}86```8788## CORS Headers8990```javascript91export default {92async fetch(request) {93if (request.method === "OPTIONS") {94return new Response(null, {95status: 204,96headers: {97"Access-Control-Allow-Origin": "*",98"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE",99"Access-Control-Allow-Headers": "Content-Type, Authorization"100}101});102}103const response = await fetch(request);104const newResponse = new Response(response.body, response);105newResponse.headers.set("Access-Control-Allow-Origin", "*");106return newResponse;107}108}109```110111## Maintenance Mode112113```javascript114export default {115async fetch(request) {116if (request.headers.get("X-Bypass-Token") === "admin") return fetch(request);117return new Response("<h1>Maintenance</h1>", {118status: 503,119headers: { "Content-Type": "text/html", "Retry-After": "3600" }120});121}122}123```124125## Pattern Selection126127| Pattern | Complexity | Use Case |128|---------|-----------|----------|129| Security Headers | Low | All sites |130| Geo-Routing | Low | Regional content |131| A/B Testing | Medium | Experiments |132| Bot Detection | Medium | Requires Bot Management |133| API Auth | Low | Backend protection |134| CORS | Low | API endpoints |135| Maintenance | Low | Deployments |136