运行验证

在服务器上检查表单的每一次运行

  1. 为什么需要它
  2. 三种运行途径
  3. 本节内容

面向管理员和表单作者:让服务器检查每一次运行、其规则和 extravars,无论运行请求来自谁。

无论是谁或什么运行表单,这项检查都适用:浏览器、调用 REST API 的脚本, 或者通过 MCP 服务器的 AI 代理。


为什么需要它

表单的规则( required 、 regex 、 minValue 、 sameAs ……)一直都是在 浏览器中检查的。随后浏览器向 POST /api/v2/job 发送两样东西:

  • rawFormData :用户填写的字段值;
  • extravars :playbook 收到的内容,由浏览器根据这些值构建。

没有运行验证时,服务器两者都信任。任何持有有效令牌的人都可以直接调用该 端点,发送任意 extravars,不受任何 regex、必填字段或列表规则的约束。 对于只在浏览器中使用的表单,这也许可以接受;但对于 由其他系统通过 REST 运行的表单,这意味着表单的规则根本没有得到执行。

服务器也无法区分来自浏览器的请求和脚本发送的请求: 两者使用相同的端点、相同的令牌和相同的请求体,而且用户可以修改 自己浏览器发出的任何请求。只有在服务器上做的检查才可信,运行 验证正是这样的检查。


三种运行途径

运行如何验证,取决于它的来源以及运行验证模式:

运行方 验证方式 作业使用的 extravars
MCP 服务器(AI 代理) 始终在服务器上验证 始终由服务器构建
浏览器或 REST API,运行验证为 off 仅在浏览器中验证 浏览器(或调用方)发送的内容
浏览器或 REST API,运行验证为 log 在服务器上验证,拒绝只记录日志 发送的内容;差异记录日志
浏览器或 REST API,运行验证为 enforce 在服务器上验证,无效时拒绝 由服务器构建

浏览器、MCP 服务器和运行验证使用同一套规则代码(共享的 表单引擎):相同的规则、相同的顺序、相同的消息。浏览器显示的错误, 服务器会以相同的文本拒绝。


本节内容

每个主题都有单独的页面:

页面 涵盖内容
启用 为整个实例启用,或为单个表单启用
记录与强制 每种模式如何处理违反规则的运行
列表行 list 字段的行如何验证
文件上传 文件字段如何验证
密码 密码字段如何验证,以及如何不出现在 API 中
重新运行 重新运行的作业如何验证
推广上线 把实例切换到 enforce,以及已知限制