解决 Jenkins 报错“Error 403 No valid crumb was included in the request
2024.02.04 05:46浏览量:154简介:本文介绍了解决 Jenkins 报错“Error 403 No valid crumb was included in the request”的方法。该问题通常是由于 CSRF (Cross-Site Request Forgery) 保护导致的。文章提供了三种可能的解决方法:手动获取 crumb、使用 Jenkins API Token 和禁用 CSRF 保护。通过这些方法,你可以成功解决该问题并顺利执行 Jenkins 任务。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
在使用 Jenkins 进行持续集成时,可能会遇到一个常见的错误:“Error 403 No valid crumb was included in the request”。这个错误通常是由于 CSRF (Cross-Site Request Forgery) 保护导致的。以下是一些可能的解决方法:
问题分析
Jenkins 通过 CSRF 保护来防止跨站请求伪造攻击。当用户尝试执行某些敏感操作(如构建项目)时,Jenkins 会要求提供“crumb”。如果请求中没有包含有效的“crumb”,就会返回“Error 403 No valid crumb was included in the request”错误。
解决方法
方法一:手动获取 crumb
- 打开 Jenkins 主页,并确保登录状态。
- 在浏览器地址栏中输入以下 URL:
http://[YOUR_JENKINS_URL]/crumbIssuer/api/json
- 将返回的 JSON 数据中的
crumb
值复制下来。 - 在进行敏感操作时,将
crumb
值添加到请求头中。方法二:使用 Jenkins API Token
- 在 Jenkins 主页上,进入“个人设置”页面。
- 在“API Token”部分,生成一个新的 API Token。
- 在进行敏感操作时,将 API Token 添加到请求头中。
方法三:禁用 CSRF 保护
注意: 不推荐禁用 CSRF 保护,因为它有助于防止跨站请求伪造攻击。只有在你完全了解潜在风险的情况下才使用此方法。 - 打开 Jenkins 主页,并确保登录状态。
- 在浏览器地址栏中输入以下 URL:
http://[YOUR_JENKINS_URL]/configureGlobalSecurity
- 在“Jenkins”下找到“Disable CSRF Protection”选项,并选中它。
- 保存配置。
实例代码(Python)
以下是使用 Python 的示例代码,用于发送请求时包含 crumb 或 API Token:
请注意,上述示例代码中的import requests
import json
# 获取 crumb 的示例代码(方法一)
crumb_url = 'http://[YOUR_JENKINS_URL]/crumbIssuer/api/json'
response = requests.get(crumb_url)
data = json.loads(response.text)
crumb = data['crumb']
# 使用 API Token 的示例代码(方法二)
api_token = '[YOUR_API_TOKEN]' # 从 Jenkins 个人设置中生成一个新的 API Token
headers = {'Authorization': 'Bearer ' + api_token}
# 发送请求的示例代码(包含 crumb 或 API Token)
url = 'http://[YOUR_JENKINS_URL]/job/[JOB_NAME]/build' # 替换为实际的 Jenkins job URL
response = requests.post(url, headers=headers) # 如果使用 crumb,将 headers 更改为包含 crumb 的字典
print(response.text)
[YOUR_JENKINS_URL]
、[JOB_NAME]
和[YOUR_API_TOKEN]
需要替换为实际的值。另外,如果你的 Jenkins 实例启用了身份验证,还需要在请求中包含用户名和密码。你可以使用requests.auth
来实现这一点。

发表评论
登录后可评论,请前往 登录 或 注册