实务专题 · 网站交接

Turnstile重试:保留草稿,不把验证通过当询盘成功

仅为合成反馈状态练习。不创建真实挑战、token、密钥、Siteverify请求或询盘,也不能验证真人或保护接口。

验证与接收状态分开

采购带防护的询盘表单时,挑战显示成功,不证明服务器接受验证,也不证明接收系统收到询盘。先约定过期、重复或暂时验证不了时用户看到什么,以及虚构草稿是否还在。

较早的一则WordPress站长讨论描述过界面显示成功、表单仍验证失败的情况。它只是历史问题来源,不是当前诊断,也不建议停用防护;这里不采纳帖中的换插件或换密钥建议。

已填写的反馈约定

只使用Demo User与chris@example.test。下方验证标签是输入的模拟结果,不是Cloudflare回包。草稿仅留在教学模型内存,不实现浏览器存储或服务器提交。

模拟验证接收端记录模型结果
过期或重复未尝试重新验证,保留草稿,不声称收到
暂不可用未尝试保留草稿等待,不默认成功
通过未尝试接收待定,不是询盘成功
通过失败本模型约定新提交先取得新验证
通过已接收仅演示接收,不是投递或咨询
过期却声称已接收记录矛盾,阻止继续

下载离线模型及10项测试,用Node 22.13或更新版本运行node turnstile-retry-model.mjs,预期是10项测试通过。模块导出next()供检查虚构状态,不是Turnstile实现。

官方文档证明到哪里

2026年10月15日核验的Cloudflare服务端验证指引要求服务端校验,token仅可使用一次、有效期五分钟;客户端错误指引说明错误回调及重置行为。客户端成功提示不能代替服务端验证。

模型不测token年龄、不生成或解析token、不做密码学验证,也不调用Siteverify。输入标签不是证据,不能接入生产认证或防垃圾路径。实际集成仍须按现行厂商规则服务端校验并处理真实响应;本资源不授权改密钥、允许主机或安全设置。

重试约定不能放宽防护

  1. 明确过期、重复、暂不可用的提示,未知验证结果绝不能变成已接收询盘。
  2. 按批准的隐私设计保留草稿;不记录密钥,也不悄悄长期保存客户资料。
  3. 本教学约定中,接收失败后的新提交需新验证。真实服务端可能有独立审查的重试/幂等方案,模型未实现,不能照抄成通用后端规则。
  4. 验证通过、接收端接受与真实投递分开留证;厂商验证的重试标识本身,不等于业务询盘去重。

真实集成只在授权环境按厂商测试方式验收。不绕过挑战、不停用防护、不编造通过结果。可另用双语表单验收演示核可见标签和错误焦点。

网站供应商可据此讨论反馈与安全重试,但它不证明拦截率、无障碍合规、投递成功、转化改善或真实客户咨询。