📌  相关文章
📜  HTTP ERROR 403 No valid crumb was included in the request\ - 不管是什么(1)

📅  最后修改于: 2023-12-03 15:31:19.786000             🧑  作者: Mango

HTTP ERROR 403 No valid crumb was included in the request - 介绍

当我们在使用 Jenkins 进行构建时,可能会遇到 HTTP ERROR 403 No valid crumb was included in the request 错误。这个错误的含义是,请求中没有正确的 crumb(面包屑)。

什么是 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。可能是因为:

  • Jenkins 被设置为使用 crumb,但请求中没有包含正确的 crumb。
  • Jenkins 没有被设置为使用 crumb,但请求中包含了 crumb。
解决方法

要解决这个问题,有以下几种方法:

  1. 在请求中包含正确的 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
  1. 关闭 Jenkins 的 crumb 防御机制。

在 Jenkins 中的 Configure Global Security -> CSRF Protection 中,将配置中的 CSRF Protection.disabled 的值设置为 true,关闭 crumb 防御机制。

示例代码:

-CSRFProtection:
    crumbIssuer:
        enabled: true
        proxyCompatability: true
    defaultCrumbIssuer:
        'Jenkins-Crumb': xxxxxxxxxxxxxxxxxxxxx
-CSRFProtection.disabled: true
  1. 将请求中的 crumb 名称修改为正确的名称。

如果 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 构建了。