本手冊記錄 jungian16types.com 靜態網站聯絡表單的服務串接方式與排查步驟。表單使用 Cloudflare Turnstile 防濫用,由 Cloudflare Worker 驗證 token,再透過 Resend 寄送通知郵件。
安全提醒:Resend API key 與 Turnstile secret 只應存放在 Cloudflare Worker 的環境變數/Secrets。不要放進網站 HTML、JavaScript、GitHub repository、截圖或公開訊息。Sitekey 是前端公開值,可以出現在表單 HTML。
cf-turnstile-response token。https://jungian16types-contact.vienor2.workers.dev/ 發送 JSON POST,內容包含表單欄位及 turnstileToken。contact@jungian16types.com,將表單內容寄到 hktypologyassociation@gmail.com。訪客填寫的電郵地址用作回覆地址。相關網站檔案:/about/(來源檔 page-1137.html,表單標記、Sitekey、Worker URL 與前端提交處理)。
0x4AAAAAAFTyXNAHMhFh_bLmhttps://jungian16types-contact.vienor2.workers.dev/https://jungian16types.com、https://www.jungian16types.comhttps://eggyor.github.ioJungian16Types <contact@jungian16types.com>hktypologyassociation@gmail.com理論問題、網頁營運、商討合作以上是除錯時用來比對的設定。若日後更換網域、Worker 或收件信箱,要同步更新對應設定。
在 Cloudflare Dashboard 的 Turnstile 找到網站使用的 widget:
jungian16types.com、www.jungian16types.com 及 eggyor.github.io。只填主機名稱,不要加 https:// 或路徑。畫面顯示「無法連線至網站/疑難排解」時:
challenges.cloudflare.com。eggyor.github.io;路徑 /jungian16types/ 不屬於 hostname。Worker 回覆驗證失敗(常見為 403)時:
Worker 名稱目前為 jungian16types-contact,公開 endpoint 如上。Worker 負責伺服器端驗證及寄信,瀏覽器不應直接呼叫 Resend。
Worker 至少需要以下 Secrets/環境變數:
TURNSTILE_SECRET:Cloudflare Turnstile 後台提供的 Secret key。RESEND_API_KEY:Resend 的 API key。在 Cloudflare Dashboard 開啟 Workers & Pages → jungian16types-contact → Settings → Variables and Secrets(介面名稱可能略有不同),確認兩個值存在並以 Secret 類型保存。新增或更新後,確認 Worker 已部署最新版本。
Worker 的來源網站 allowlist 應包括需要使用表單的來源:
https://jungian16types.comhttps://www.jungian16types.comhttps://eggyor.github.io如果更改網站主機名稱,要更新 allowlist。瀏覽器跨來源請求的 Origin 是「協定 + 主機名稱」,不包含路徑及結尾的專案子路徑。
排查線索:
OPTIONS preflight 錯誤:比對瀏覽器 Network 面板中的 Origin 與 Worker allowlist,並確認 OPTIONS 回應有允許的來源、POST/OPTIONS 方法及 Content-Type 標頭。RESEND_API_KEY Secret 是否正確、Worker 是否已部署,並查看 Worker 日誌與 Resend API 的錯誤內容。page-1137.html 或其他前端程式碼。jungian16types.com 狀態為 Verified。這表示此網域已可作為寄件網域。contact@jungian16types.com。hktypologyassociation@gmail.com。網域已驗證代表 Resend 可以代表該網域寄信;這不會自動建立一個可登入收信的郵箱。收件地址是表單通知要送達的郵箱。
hktypologyassociation@gmail.com 收到郵件,主旨、表單欄位與回覆地址合理。| 症狀 | 優先檢查 |
|---|---|
| Turnstile 顯示無法連線 | Widget hostname、challenges.cloudflare.com 網路封鎖、擴充套件、HTTPS |
| 點提交後提示驗證失敗 | Sitekey 是否匹配、hostname allowlist、token 是否過期或重用、Worker 的 Turnstile secret |
| 瀏覽器報 CORS/preflight | Worker Origin allowlist、OPTIONS 回應與回應標頭 |
| Worker 回覆 502/郵件服務錯誤 | Resend API key Secret、寄件網域驗證、Resend Logs |
| 畫面顯示成功但找不到信 | Resend Logs、收件匣垃圾郵件、收件地址與郵件規則 |
| 只在 GitHub Pages 預覽失敗 | eggyor.github.io 是否加入 Turnstile hostname 與 Worker Origin allowlist |
最後更新:2026-10-11