jenkins - 如何从经典 ASP 运行 Jenkins 作业?
问题描述
我已经搜索了所有内容,但找不到 VBscript 示例,并且我的所有尝试都失败了。我需要从经典的 ASP 网页 (VBScript) 运行 Jenkins 作业。我可以使用下面的代码提交作业,但它返回 403 crumb 错误。我需要做的是为这项工作提供用户/密码(我有),但我不知道如何在 VBScript 中为 Jenkins 设置身份验证。我知道碎屑错误是由 CSRF 引起的(我读了很多,但无法将其关闭),并希望身份验证能解决这个问题。任何帮助深表感谢。提前致谢。
Dim strJenkinsURL, HttpReq
strJenkinsURL = "http://<jenkinsmaster>/job/<myjob>/buildWithParameters?token=test&Description="& strDesc &"&TestEnv="& testEnv
Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.Open "POST", strJenkinsURL, False
HttpReq.Send
Response.Write "<br>Status: "& HttpReq.Status & vbNewline
Response.Write "<br>Response: "& HttpReq.responseText & vbNewline
编辑:根据评论,我尝试添加 Jenkins 登录信息,但我仍然收到来自 Jenkins 的 403 crumb 错误。我已经尝试寻找获取面包屑的解决方案,但没有找到任何 VBScript 示例。这是我现在正在尝试的代码和响应,但我不知道 setRequestHeaders 是否适用于 Jenkins,并且 Jenkins 文档没有任何帮助:
Dim strJenkinsURL
strJenkinsURL = "http://<jenkins master>/job/testjob/buildWithParameters?token=test&Description="& strDesc &"&TestEnv="& testEnv
Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.Open "POST", strJenkinsURL, False
HttpReq.setRequestHeader "UserName", "jenkinsuser"
HttpReq.setRequestHeader "Password", "userpassword"
HttpReq.setRequestHeader "Jenkins-Crumb", "<crumbvalue>"
HttpReq.Send
Response.Write "<br>Status: "& HttpReq.Status & vbNewline
Response.Write "<br>Response: "& HttpReq.responseText & vbNewline
状态:403 响应:HTTP 错误 403 访问 /job/testjob/buildWithParameters 时出现问题。原因:请求中没有包含有效的面包屑
解决方案
对于 HTTP POST 请求,URL 指定资源,即strJenkinsURL = "http://<jenkinsmaster>/job/<myjob>/buildWithParameters
参数作为.Send
命令的一部分添加:
Dim sParams
sParams = "token=test&Description=" & strDesc & "&TestEnv=" & testEnv
HttpReq.Send(sParams)
正如@Lankymart 指出的那样,您还需要设置适当的标题,例如
HttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
HttpReq.setRequestHeader("Content-Length", CStr(Len(sParams)))
推荐阅读
- java - 单词生成器中无限循环文本的问题
- python - 如何将 Numpy 中浮点数的精度设置为 52 位小数?
- html - Safari 在元素之间留出空间
- php - Symfony\Component\Debug\Exception\FatalThrowableError:找不到类“用户”
- r - 删除 R 中具有相似(不相同)字符串的行
- save - tensorflow.js 如果存在加载保存的模型,或者如果不存在,则在每个 epochEnd 回调中创建并保存模型的检查点
- node.js - 如何在认证云函数中调用存储触发云函数?
- javascript - 有没有办法通过 react-virtualized 将 ref 设置为 List ?
- ios - error Recaptcha Verifier 仅支持在 iOS 上的浏览器 HTTP/HTTPS 环境中
- javascript - IndexedDB - 这是否可以保持初始数据排序?