问题:新版本jenkins2.2.* 调用api接口提示403
按照jenkins老版本的操作,我一开始就去全局安全配置中把跨域的勾选给去了。结果调用api还是403
具体message提示:No valid crumb was included in the request。
差异:新老版本jenkins差异在于老版本提供选项框可以自由设置是否勾选开启CSRF,新版本是默认CSRF是开启的,且UI界面上不提供关闭选项。
解决方案:
方案一、
通过启动参数把CSRF关掉:
参照问题:https://issues.jenkins-ci.org/browse/JENKINS-61375
nohup java -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -jar jenkins.war &
关闭后全局安全配置下跨站请求伪造保护是这样的。再次执行接口调用就可以了。
方案二、通过在请求头添加crumb
1、获取crumb
curl -s 'http://admin:[email protected]:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
2、测试
验证接口调用没通过。如果哪位老师刚好做过,麻烦评论里告知一下,具体哪一步骤出问题了。