📅  最后修改于: 2023-12-03 15:31:19.786000             🧑  作者: Mango
当我们在使用 Jenkins 进行构建时,可能会遇到 HTTP ERROR 403 No valid crumb was included in the request 错误。这个错误的含义是,请求中没有正确的 crumb(面包屑)。
Crumb 是一种 CSRF 防御机制,全称为 Cross-Site Request Forgery 防御机制。Jenkins 通过 crumb 防止攻击者通过 CSRF 攻击来伪造请求。在使用 Jenkins 进行构建时,如果请求中没有正确的 crumb,Jenkins 将不会执行构建。
出现 HTTP ERROR 403 No valid crumb was included in the request 错误的原因是,请求中没有正确的 crumb。可能是因为:
要解决这个问题,有以下几种方法:
在请求中加入正确的 crumb,可以在请求头中添加 X-XXXXXXXXXXXXXXXXXXX-Crumb: XXXXXXXXXXXXXXXXXX。其中,X-XXXXXXXXXXXXXXXXXXX-Crumb 是请求头的名称,XXXXXXXXXXXXXXXXXXXX 是 crumb 的值。可以在 Jenkins 中的 Configure Global Security -> CSRF Protection 中查看 crumb。
示例代码:
curl -XPOST -H 'X-XXXXXXXXXXXXXXXXXXX-Crumb: XXXXXXXXXXXXXXXXXX' http://jenkins-url/job/your-job/buildWithParameters
在 Jenkins 中的 Configure Global Security -> CSRF Protection 中,将配置中的 CSRF Protection.disabled 的值设置为 true,关闭 crumb 防御机制。
示例代码:
-CSRFProtection:
crumbIssuer:
enabled: true
proxyCompatability: true
defaultCrumbIssuer:
'Jenkins-Crumb': xxxxxxxxxxxxxxxxxxxxx
-CSRFProtection.disabled: true
如果 Jenkins 中的 crumb 名称配置不是默认的 Crumb 可能需要在请求中修改请求头中 X-XXXXXXXXXXXXXXXXXXX-Crumb 的名称为正确名称。
示例代码:
curl -XPOST -H 'X-Jenkins-xxxxxxxxxxxxxxxxxxxxxx-Crumb: XXXXXXXXXXXXXXXXXX' http://jenkins-url/job/your-job/buildWithParameters
通过以上方法,我们可以解决 HTTP ERROR 403 No valid crumb was included in the request 错误。
总结:当出现 HTTP ERROR 403 No valid crumb was included in the request 错误时,我们需要确认请求中是否包含正确的 crumb,或关闭 Jenkins 的 crumb 防御机制,或修改请求中的 crumb 名称。这样,我们就可以顺利地进行 Jenkins 构建了。