【发布时间】:2017-04-14 13:09:46
【问题描述】:
我编写了一个与 jenkins 交互并使用 node-jenkins 的 node.js 应用程序。
它适用于jenkins.job.get 和jenkins.build.get 等API,但是当我尝试使用jenkins.build.log 或jenkins.build.logStream 时,它会失败并出现错误:jenkins: build.log: forbidden。
失败响应中返回的消息是No valid crumb was included in the request。
我做错了什么?
(我也为此打开了an issue)
我们使用 Jenkins 版本 2.7.1。
编辑:如果我使用POST 发送与http.request 相同的URL (/job/MY_JOB/my_build_number/logText/progressiveText),我会得到相同的响应,但如果我使用GET,我会正确获取日志。
【问题讨论】:
-
您可以尝试以某种方式记录发送给 Jenkins 的标头吗?
-
@Mr.Phoenix 是的,返回的错误包含它们:
request.req2: {"auth":"my_username:my_pass","hostname":"my_host","port":"my_port","path":"/job/MY_JOB/my_build_number/logText/progressiveText","method":"POST","headers":{"referer":"http://my_username:my_pass@my_host:my_port/","content-type":"application/x-www-form-urlencoded; charset=utf-8","content-length":0}} -
据我所见,当某些标头未与请求一起发送或 csrf 检查失败或代理在两者之间时会发生这种错误消息,如果您查看 GitHub 存储库,则会返回 401詹金斯它已针对版本> 2进行了修补。重新检查客户端和 Jenkins 上的配置,您可能遗漏了一些东西。在客户端的 GitHub 存储库中找到解决方案会更好。