我目前正在编写一个 Java jenkins 插件,我面临订书机和 Java-Javascript 方法绑定的问题。
我的 java 文件包含一个我想在单击按钮时在 jelly 文件中使用的方法:
@JavaScriptMethod
public void method() {
...
}
var it = <st:bind value="${it}"/>
$('#Btn').click(function() {
it.method();
});
这很简单,应该可以工作,但是订书机发出的请求中的标头使用“Crumb”作为 CSRF 令牌,而 jenkins 期望“Jenkins-Crumb”,所以我得到了 403。
这个 stackoverflow 帖子与我的问题相同,但已经很老了,我尝试通过编辑请求来重命名标头,然后得到一个带有“Crumb 不匹配”的 500(
/crumbIssuer/api/json
给出与所提供的相同的令牌)没有理由)。
我正在使用 Jenkins v2.452.1。
我刚刚找到了这个问题的原因。 Jenkins 注入的“crumb”js 变量既不包含 crumb cookie,也不包含标头名称。
然后我搜索了jenkins的js代码,发现这些值是从HTML head标签中检索的。 头部不包含与面包屑相关的属性。
在我的果冻中,我将
如果你遇到同样的问题(我知道很难找到有关 Jenkins 插件开发的答案),请确保你的 head 标签包含 crumb 值和 crumb header 名称,并检查你的 jelly 文件。