执行curl创建Jenkins视图时遇HTTP 403错误:无有效crumb
解决Jenkins创建视图时403无有效crumb及curl语法错误问题
一、先修正curl命令的语法错误
你当前的curl命令存在参数顺序和格式错误,直接导致了Could not resolve host: Content-Type这类解析失败问题:
-v是 verbose 模式参数,需单独放置,不能紧跟在-H之后-H参数后要直接跟完整请求头,格式为-H "Key: Value",不能与-d参数混放
修正后的基础命令框架:
curl -v -H "Content-Type: application/x-www-form-urlencoded" \ -d "Submit=OK" \ -d "mode=hudson.plugins.nested_view.NestedView" \ -d "name=prda" \ -d 'json={"name": "prda", "mode": "hudson.plugins.nested_view.NestedView", "Submit": "OK"}' \ http://wcportal-workplace.subnet1phx1.devcecphx.oraclevcn.com:8080/view/TxnPreview/createView
二、解决Jenkins 403 crumb验证问题
Jenkins的crumb机制用于防范CSRF攻击,必须先获取有效crumb再携带到请求中,步骤如下:
1. 获取Jenkins crumb
执行以下命令获取crumb(替换<jenkins_username>和<jenkins_password>为你的实际账号密码,若用API token则替换密码为token):
CRUMB=$(curl -u <jenkins_username>:<jenkins_password> \ http://wcportal-workplace.subnet1phx1.devcecphx.oraclevcn.com:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb))
2. 携带crumb执行创建视图请求
将获取到的crumb作为请求头加入curl命令:
curl -v -u <jenkins_username>:<jenkins_password> \ -H "$CRUMB" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "Submit=OK" \ -d "mode=hudson.plugins.nested_view.NestedView" \ -d "name=prda" \ -d 'json={"name": "prda", "mode": "hudson.plugins.nested_view.NestedView", "Submit": "OK"}' \ http://wcportal-workplace.subnet1phx1.devcecphx.oraclevcn.com:8080/view/TxnPreview/createView
三、额外注意事项
- 若Jenkins开启了“防止跨站点请求伪造”全局设置,必须携带crumb,无例外
- 确保你的账号拥有
View/Create权限,否则即使crumb正确也会报错 - 若Jenkins部署在HTTPS环境下,需添加
-k参数跳过证书验证(测试环境用),或指定合法证书路径
内容的提问来源于stack exchange,提问作者Prasobir Mandal
相关产品推荐
相关产品推荐

