【发布时间】:2023-11-13 18:46:01
【问题描述】:
我正在开发一个 Jenkins 插件,但现在我正试图使用 JavaScript 代理获取方法的返回值,如 here 所述。
我只是想调用这个 kotlin 方法:
@JavaScriptMethod
fun getMonitoredJobsAsJSON(): JSONArray = toJSON(getObjectMapper().writeValueAsString(getMonitoredJobs())) as JSONArray
从果冻脚本中使用:
<script>
var board = <st:bind value="${it}"/>
board.getMonitoredJobsAsJSON(function(data) {
//
})
</script>
当我在 Jenkins 服务器上禁用 CSRF 保护时,这实际上有效,但我显然不想这样做。开启 CSRF 保护后,我总是会收到 no valid crumb found 403 错误:
POST http://localhost:8080/$stapler/bound/36dc05fc-c12d-4182-a008-60bcf5c49307/getMonitoredJobsAsJSON 403 (No valid crumb was included in the request)
我知道如何从 crumbIssuer 端点检索 crumbs 以与 Jenkins rest api 交互,但我几乎没有找到任何资源来说明如何使其适用于插件中的订书机请求。
另外,当我检查请求时,请求中实际上设置了一个 crumb 标头:
提前感谢您的帮助。
【问题讨论】:
-
你看我贴的两个链接了吗?
-
嘿,是的,我做到了,我从第一个链接中没有得到太多,但我花了更多时间从第二个链接中找到可能的解决方案,它基本上可以满足我的要求实现,但我对实际发生的事情还没有清楚的了解。感谢您的链接!
-
我没有设置来尝试这些,这就是为什么我认为它可以帮助您探索解决方案
-
plugin name是什么?你读过吗? wiki.jenkins.io/display/JENKINS/…
标签: jenkins jenkins-plugins csrf hudson hudson-plugins