Turnstile 表单 /api/contact
人机校验后写入 D1;服务端强制 siteverify。
Zero Trust Access /api/admin/stats
校验 Cf-Access-Jwt-Assertion 头或 CF_Authorization cookie 的签名/iss/aud。未配置 Access 时该接口默认拒绝(401/403)。
安全响应头
每个响应都由 harden() 注入下列头(WebSocket 101 例外)。
strict-transport-security: max-age=63072000; includeSubDomains; preload content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://challenges.cloudflare.com; frame-src https://challenges.cloudflare.com; connect-src 'self' x-content-type-options: nosniff x-frame-options: DENY referrer-policy: strict-origin-when-cross-origin permissions-policy: geolocation=(), microphone=(), camera=() x-request-id: 每个响应唯一,与 wrangler tail 日志中的 requestId 对齐