CSRF 跨域保護(hù)解決方案

當(dāng)直接調(diào)用 Jenkins 接口時(shí),可能會(huì)遇到 HTTP ERROR 403 No valid crumb was included in the request 的錯(cuò)誤。這是因?yàn)槟J(rèn)情況下,Jenkins 的接口不允許跨域請(qǐng)求。我們可以通過(guò)修改 Jenkins 的配置來(lái)解決此問(wèn)題。

配置步驟

首先,進(jìn)入 Jenkins 容器并修改配置文件 jenkins.sh,添加 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 參數(shù)。

# 進(jìn)入 Jenkins 容器
$ docker exec -u root -it jenkins /bin/bash

# 修改配置文件
$ vim /usr/local/bin/jenkins.sh

然后重啟 Jenkins 容器:

# 重啟 Jenkins
$ docker restart jenkins

配置完成后,打開(kāi) Jenkins 的“系統(tǒng)管理-全局安全配置”,確認(rèn)設(shè)置已生效。

Jenkins CSRF 配置

常用接口介紹

Jenkins 提供了一系列的 API 接口,支持通過(guò) HTTP 請(qǐng)求來(lái)進(jìn)行任務(wù)的觸發(fā)、創(chuàng)建和管理。

觸發(fā)任務(wù)執(zhí)行

可以通過(guò) HTTP POST 請(qǐng)求觸發(fā) Jenkins 任務(wù)的執(zhí)行。例如,無(wú)參任務(wù) parallelsAlwaysFailFast 可以這樣觸發(fā):

curl -X POST 'http://192.168.56.114:8080/job/parallelsAlwaysFailFast/build' --user admin:admin123

對(duì)于帶參數(shù)的任務(wù),如 pipeline_variables,需調(diào)用 buildWithParameters 接口:

curl -X POST 'http://192.168.56.114:8080/job/pipeline_variables/buildWithParameters' --user admin:admin123 --data ENV=prod

創(chuàng)建任務(wù)

要在 Jenkins 中創(chuàng)建任務(wù),可以使用 POST 請(qǐng)求發(fā)送 config.xml 文件到 Jenkins 服務(wù)器。

curl -L 'http://192.168.56.114:8080/createItem?name=api_job_test' 
-H 'Content-Type: application/xml' 
--user admin:admin123 
--data ''

Jenkins API 接口支持的 SDK

Jenkins 提供了多種 SDK 來(lái)支持 API 調(diào)用,幫助開(kāi)發(fā)者在不同語(yǔ)言環(huán)境下更方便地操作 Jenkins。

Python API 包裝器

Python 的 JenkinsAPI、Python-Jenkins、api4jenkins 和 aiojenkins 是針對(duì) Jenkins REST API 的 Python 包裝器,提供面向?qū)ο蟮慕涌冢沟猛ㄟ^(guò) Python 控制 Jenkins 更加簡(jiǎn)便。

Java API 包裝器

jenkins-rest 是一個(gè) Java 項(xiàng)目,提供對(duì) Jenkins REST API 的訪問(wèn),支持通過(guò)編程方式進(jìn)行作業(yè)提交、監(jiān)控等操作。

Ruby API 包裝器

Jenkins API 客戶端是 Ruby 的包裝器,使用 JSON API 來(lái)控制 Jenkins,支持作業(yè)和視圖的創(chuàng)建和管理。

參考

通過(guò)本文的介紹,您可以更好地利用 Jenkins 的遠(yuǎn)程訪問(wèn) API 來(lái)簡(jiǎn)化持續(xù)集成的管理和操作過(guò)程。

FAQ

問(wèn):如何通過(guò) REST API 遠(yuǎn)程訪問(wèn) Jenkins?

問(wèn):如何解決 Jenkins API 的 CSRF 跨域請(qǐng)求問(wèn)題?

問(wèn):如何使用 Jenkins API 觸發(fā)任務(wù)執(zhí)行?

問(wèn):如何通過(guò) Jenkins API 創(chuàng)建新任務(wù)?

問(wèn):Jenkins API 可以通過(guò)哪些 SDK 進(jìn)行調(diào)用?

上一篇:

JenkinsAPI文檔詳解

下一篇:

MinIO API是什么以及如何使用
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)